我目前有两个等长的大型numpy数组。第一个数组填充5个值的值,这些值将是5个浮点值或5个0的集合:
[ [.03, 5, .1, 0.23, 5], [.1, .6, .8, 4.3], [0,0,0,0,0] ... ]
第二个数组以相同的方式填充值。我需要组合两个数组,以便在array_two设置非零值的任何位置,array_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_two获取值。这不能用总和来完成,因为这会使位置3成为应有的两倍。
答案 0 :(得分:1)
numpy.where
适用于以下情况:
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)
在您的情况下,numpy.maximum
也可能有用。
c = np.maximum(a, b)