我有三个numpy数组:
A = np.array([41, 162, 349, 641, 531, 445, 35])
B = np.array([42, 162, 323, 479, 436, 389, 36])
C = np.array([1.4, 7, 14, 28, 70, 140])
我想生成第四个数组D,其尺寸与A和B相同,如果A中的值小于最大值,则将A中的每个值与C中的最大值进行比较,从A中取值在C中,如果A中的值大于C中的最大值,则来自B的值。所以在这种情况下:
np.max(C) = 140
因此D将是:
D = np.array([41, 162, 323, 479, 436, 389, 35])
答案 0 :(得分:9)
np.where()
是为此而做的。
D = np.where(A<C.max(), A, B)
# [ 41 162 323 479 436 389 35]
答案 1 :(得分:3)
np.where()
可能是首选解决方案,如 @Ghilas BELHADJ 所述。如果你想要列表理解版本(可能没有numpy
使用)
max_c = np.max(C)
D = np.array([A[i] if A[i] < max_c else B[i] for i in range(len(A))])