- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以使用numpy.nanargmin
,以便它在仅包含nans的列上返回numpy.nan
。现在,当发生这种情况时,它会引发 ValueError
。而且我不能使用 numpy.argmin ,因为当列中只有几个 nan 时,这会失败。
http://docs.scipy.org/doc/numpy/reference/generated/numpy.nanargmin.html表示针对全 nan 切片引发 ValueError
。在这种情况下,我希望它返回 numpy.nan (只是为了进一步用 nan 掩盖“非数据”)
接下来的一点就是这样做的,但是速度超慢并且不是真正的Pythonic:
for i in range(R.shape[0]):
bestindex = numpy.nanargmin(R[i,:])
if(numpy.isnan(bestindex)):
bestepsilons[i]=numpy.nan
else:
bestepsilons[i]=epsilon[bestindex]
接下来的一点也有效,但前提是不涉及所有 nan 列:
ar = numpy.nanargmin(R, axis=1)
bestepsilons = epsilon[ar]
所以理想情况下,我希望最后一点也能与全纳米列一起使用
最佳答案
>>> def _nanargmin(arr, axis):
... try:
... return np.nanargmin(arr, axis)
... except ValueError:
... return np.nan
演示:
>>> a = np.array([[np.nan]*10, np.ones(10)])
>>> _nanargmin(a, axis=1)
nan
>>> _nanargmin(a, axis=0)
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
无论如何,这不太可能是你想要的。不确定你到底在追求什么。如果您想要的只是过滤掉 nan
,则使用 bool 索引:
>>> a[~np.isnan(a)]
array([ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
>>> np.argmin(_)
0
EDIT2:看起来您正在寻找屏蔽数组:
>>> a = np.vstack(([np.nan]*10, np.arange(10), np.arange(11, 1, -1)))
>>> a[2, 4] = np.nan
>>> m = np.ma.masked_array(a, np.isnan(a))
>>> np.argmin(m, axis=0)
array([1, 1, 1, 1, 1, 1, 2, 2, 2, 2])
>>> np.argmin(m, axis=1)
array([0, 0, 9])
关于python - 如果列全部为 nan,则使 numpy.nanargmin 返回 nan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22321995/
是否可以使用numpy.nanargmin,以便它在仅包含nans的列上返回numpy.nan。现在,当发生这种情况时,它会引发 ValueError。而且我不能使用 numpy.argmin ,因为
我知道 np.nanargmin 找到列表中不是 NaN 的最小数字。但是,如果调用数组 [np.nan, np.inf],它会产生 0,这是一个 NaN。我发现这种行为很奇怪,我只是想知道以这种方式
我是一名优秀的程序员,十分优秀!