根据条件合并数组

时间:2017-06-28 10:35:36

标签: python arrays numpy

我有三个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])

2 个答案:

答案 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))])