是否可以在其中仅包含 nan 的列上使用 ,numpy.nanargmin以便它返回。numpy.nan现在,ValueError当发生这种情况时,它会引发 , 。我不能使用numpy.argmin,因为当列中只有几个 nan 时,这会失败。
http://docs.scipy.org/doc/numpy/reference/ generated/numpy.nanargmin.html 说 是ValueError针对全 nan 切片提出的。在这种情况下,我希望它返回 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]
Run Code Online (Sandbox Code Playgroud)
接下来的一点也有效,但前提是不涉及所有 nan 列:
ar = numpy.nanargmin(R, axis=1)
bestepsilons = epsilon[ar]
Run Code Online (Sandbox Code Playgroud)
所以理想情况下,我希望最后一点也能与全纳米列一起使用
找到了解决办法:
# makes everything nan to start with
bestepsilons1 = numpy.zeros(R.shape[0])+numpy.nan
# finds the indices where the entire column would be nan, so the nanargmin would raise an error
d0 = numpy.nanmin(R, axis=1)
# on the indices where we do not have a nan-column, get the right index with nanargmin, and than put the right value in those points
bestepsilons1[~numpy.isnan(d0)] = epsilon[numpy.nanargmin(R[~numpy.isnan(d0),:], axis=1)]
Run Code Online (Sandbox Code Playgroud)
这基本上是一种解决方法,仅在不会给出错误的地方采用 nanargmin,因为在这些地方我们希望结果索引无论如何都是 nan
| 归档时间: |
|
| 查看次数: |
3777 次 |
| 最近记录: |