有没有办法按列修改循环列中的numpy数组?
我希望这可以通过以下代码来完成:
import numpy as n
cnA=n.array([[10,20]]).T
mnX=n.array([[1,2],[3,4]])
for cnX in n.nditer(mnX.T, <some params>):
cnX = cnX+cnA
我应该使用哪些参数来获取mnX=[[10,23],[12,24]]
?
我知道可以使用以下代码解决问题:
cnA=n.array([10,20])
mnX=n.array([[1,2],[3,4]])
for col in range(mnX.shape[1]):
mnX[:,col] = mnX[:,col]+cnA
Hovewer,在python中我们遍历修改过的对象,而不是索引,所以问题是 - 是否可以直接遍历列(需要就地修改)?
答案 0 :(得分:4)
您知道,我们中的一些人,在Python中,在有用时会迭代索引而不是修改对象。虽然在NumPy中,作为一般规则,除非没有其他出路,否则我们不会明确迭代:对于您的问题,最简单的方法是跳过迭代并依赖于广播:
mnX += cnA
如果你坚持迭代,我认为最简单的就是遍历转置数组:
for col in mnX.T:
col += cnA[:, 0].T