Numpy数组过滤两次和重复

2024-04-20 02:04:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在一个大数组上执行两个过滤和一个替换步骤,但是我无法找到一种不做一些复制或for循环的高效方法。在

例如,想象两个大小不同的numpy数组。我想用两个过滤器。第一个过滤器只选择b中低于6(b’)的元素,第二个过滤器在a低于b’时用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元素进行第一次掩蔽:

^{pr2}$

现在,我想用a和b[m]之间的最小值替换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 ]

而且很管用。有没有很酷的切片方法可以不做二次阵列? 谢谢。在


Tags: 方法numpy元素过滤器fornp步骤切片