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的解决方案