我试图比较两个列表,并将第一个列表的值替换为第二个列表的值,前提是它们较小。
我尝试了python中的小于函数,但这似乎取代了整个列表。
A = [7 , 10 , 2, 5 , 9]
B = [8 , 12 , 1, 4 , 7]
A[A < B] = B
这将列表A替换为列表B,可能是因为它比较了整个列表。我只希望替换比B中的值小的值,结果是:
8、12、2、5、9
发布于 2019-10-24 15:06:02
做:
import numpy as np
A = np.array([7, 10, 2, 5, 9])
B = np.array([8, 12, 1, 4, 7])
A[A < B] = B[A < B]
print(A)
输出
[ 8 12 2 5 9]
发布于 2019-10-24 15:12:32
使用numpy.place
-根据条件更改数组的元素:
import numpy as np
a = np.array([7 , 10 , 2, 5 , 9])
b = np.array([8 , 12 , 1, 4 , 7])
np.place(a, a < b, b)
print(a) # [ 8 12 2 5 9]
发布于 2019-10-24 15:24:41
如果您想把它保存在vanilla python中,您可以这样做:
A[:] = [max(a, b) for a, b in zip(A, B)]
这是一个真正的就地操作,这样id(A)
就不会改变.更简单的方法可能是重新分配A
A = [max(a, b) for a, b in zip(A, B)]
https://stackoverflow.com/questions/58544129
复制相似问题