我希望在一个较大的数组上执行两个过滤和一个替换步骤,但我无法找到一种有效的方法来做到这一点,而不需要进行一些复制或循环。
例如,想象一下大小不同的两个numpy数组。我想应用两个过滤器。第一个是选择小于6的b元素(b'),第二个是将b'的值替换为a的值,如果a小于b'的值:
a = np.array( [ 2,2,2,2,2,2] )
b = np.array( [ 0,1,2,3,4,5,6,7,8,9] )
我会先通过选择小于6的b元素进行第一次掩码处理:
m = b < 6
现在,我想把b[m]的值替换为a和b[m]之间的最小值,期望结果在b中:
[ 0,1,2,2,2,2,6,7,8,9]
使用:
n = a < b[m]
b[m][n] = a[n]
不起作用。可能是由于某些中间数组导致的。
c = np.array( [ 0, 1, 2, 3, 4, 5 ] )
我可以直接执行:
c[ a < c ] = a [ a < c ]
它能正常运行。有没有更酷的切片方式可以在不生成第二个数组的情况下完成呢?谢谢。
numpy.where()
,可能需要嵌套使用... - MattDMo