Python 按元素应用

Python 按元素应用,python,numpy,matrix,Python,Numpy,Matrix,考虑阵列: a = np.array([[nan, 0., 0.], [nan, 1., 1.], [nan, 2., nan]]) b = np.array([2., 0., 0.]) 我正在努力实现以下目标: 以x为例,它在a 将b中的相应项替换为x 取该数组的和 在这种情况下,它是: For row = 2, col = 1 a[row, col] -> 2. # 1st col Replace 1st e

考虑阵列:

a = np.array([[nan,  0.,  0.],
              [nan,  1.,  1.],
              [nan,  2.,  nan]])

b = np.array([2., 0., 0.])
我正在努力实现以下目标:

  • x
    为例,它在
    a
  • b
    中的相应项替换为
    x
  • 取该数组的和
在这种情况下,它是:

For row = 2, col = 1
a[row, col] -> 2. # 1st col

Replace 1st element in `b` with 2.:
[2., 2., 0.]

Full matrix:
[[nan, sum([2,0,0]), sum([2,0,0])],
 [nan, sum([2,1,0]), sum([2,0,1])],
 [nan, sum([2,2,0]), nan]]

result = [[nan, 2, 2],
          [nan, 3, 3],
          [nan, 4, nan]]
如何实现
结果

可能:

c=np.array([[sum(b.tolist())+y for i in range(len(x))] for y,x in enumerate(a.tolist())])
c[np.isnan(a)]=np.nan
print(c)
输出:

[[ nan   2.   2.]
 [ nan   3.   3.]
 [ nan   4.  nan]]

我想答案很简单:

a - b + b.sum()
#array([[nan,  2.,  2.],
#       [nan,  3.,  3.],
#       [nan,  4., nan]])

再说一遍,
0.
如何变成
sum([2,0,0])
?@DYZ我假设是因为用
a[0][1]
替换
b[1]
sum([2,0,0])
-中间的
0
被替换为
0
@AChampion为什么会有
sum([2,1,0])和
sum([2,0,1]))
在第二行,而不是两个
sum([2,1,1])
s?这只是我的解释-因为他想要它的元素,例如
a[1][1]
映射到
sum([b[0],a[1][1],b[2]])
映射到
sum([b[0],b[1],a[1][2])
我想避免使用numpy@koPytok好吧,我不知道,所以用DYZ的解决方案