有没有一种方法可以逐列修改循环中的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

hoviewer,在python中,我们循环遍历修改过的对象,而不是索引,所以问题是-是否可以直接循环遍历列(需要就地修改的列)?

最佳答案

正如你所知道的,我们中的一些人,在Python中,在索引上迭代,而不是在有帮助的时候修改对象。尽管在NumPy中,作为一般规则,除非没有其他解决方法,否则我们不会显式地迭代:对于您的问题,最简单的方法是跳过迭代并依赖广播:

mnX += cnA

如果您坚持迭代,我认为最简单的方法是迭代转置数组:
for col in mnX.T:
    col += cnA[:, 0].T

10-06 11:30