Python 高效地组合两个numpy阵列,而无需添加

Python 高效地组合两个numpy阵列,而无需添加,python,arrays,numpy,statistics,sum,Python,Arrays,Numpy,Statistics,Sum,我目前有两个相当长的大numpy数组。第一个数组由5个值组成的集合填充,这些值可以是一组5个浮点值,也可以是5个0,如下所示: [ [.03, 5, .1, 0.23, 5], [.1, .6, .8, 4.3], [0,0,0,0,0] ... ] 第二个数组以相同的方式填充值。我需要组合这两个数组,以便在数组\ two具有非零值集的任何位置,数组\ one中的相应位置需要设置为该值。如果array_one已经有一个值,那么它应该保持不变。这是一个很好的例子,所以这里是一个我试图解释应该发

我目前有两个相当长的大numpy数组。第一个数组由5个值组成的集合填充,这些值可以是一组5个浮点值,也可以是5个0,如下所示:

[ [.03, 5, .1, 0.23, 5], [.1, .6, .8, 4.3], [0,0,0,0,0] ... ] 
第二个数组以相同的方式填充值。我需要组合这两个数组,以便在数组\ two具有非零值集的任何位置,数组\ one中的相应位置需要设置为该值。如果array_one已经有一个值,那么它应该保持不变。这是一个很好的例子,所以这里是一个我试图解释应该发生什么的例子

Array one:  [ [.03, 5, .1, 0.23, 5], [0,0,0,0,0], [.1, .6, .8, 4.3, .2], [0,0,0,0,0], 
    [0,0,0,0,0] ... ]

Array two: [ [0,0,0,0,0], [0,0,0,0,0], [.1, .6, .8, 4.3], [0,0,0,0,0], 
    [32 ,2 , 4.6 , 3.4 , 0.2] ... ]
生成的数组应为:

[ [.03, 5, .1, 0.23, 5], [0,0,0,0,0], [.1, .6, .8, 4.3, .2], [0,0,0,0,0], 
       [32 ,2 , 4.6 , 3.4 , 0.2] ...     ]

基本上,新数组从位置
5
处的
array\u two
获取值。这不能用一个总数来完成,因为这会使第三个位置是它应该的两倍。

numpy。其中
是对这种情况的补偿:

import numpy as np
wh = (a != 0).any(1, keepdim=True)
# or for numpy version < 1.7
wh = (a != 0).any(1)[:, np.newaxis]
c = np.where(wh, a, b)

np.max看起来可能是最有效的,但有些值是负数,所以它抓住了零。是否有一个函数沿着np.maximum_from_zero?@zmachine123,Ya,如果您的值为负值,那么
maximum
可能不是最佳选择。还有其他一些方法可以做到这一点,但是有什么原因你不想使用
where
?where很好用实际上我只是想尽可能地提高效率,但是where看起来很有效,谢谢。
c = np.maximum(a, b)