Python 在循环中修改NumPy数组

Python 在循环中修改NumPy数组,python,arrays,numpy,Python,Arrays,Numpy,我在NumPy中遇到数组操作问题。如果我创建两个数组x和y,然后 x = x - y 我得到了我所期望的,即y的每个元素从x的对应元素中减去,因此x被修改。 但是,如果我将其放入循环中: m = np.array([[1,2,3],[1,2,3]]) y = array([1, 1, 1]) for i in m: i = i - y 矩阵m保持不变。我肯定我错过了一些非常基本的东西。。。如何在循环中更改数组m?更新:我意识到最简单的事情是 m = m-y 这正是我所期望的 这与

我在NumPy中遇到数组操作问题。如果我创建两个数组
x
y
,然后

x = x - y 
我得到了我所期望的,即
y
的每个元素从
x
的对应元素中减去,因此
x
被修改。 但是,如果我将其放入循环中:

m = np.array([[1,2,3],[1,2,3]])
y = array([1, 1, 1])
for i in m:
    i = i - y

矩阵
m
保持不变。我肯定我错过了一些非常基本的东西。。。如何在循环中更改数组
m

更新:我意识到最简单的事情是

m = m-y

这正是我所期望的

这与numpy矩阵无关,而是python如何处理

i = i - y
i-y
生成数组的新引用。当您将它指定给名称i时,因此i不是指它之前的名称,而是指新创建的数组

以下代码将满足您的目的

for idx, i in enumerate(m):
    m[idx] = i - y

如果使用的示例无法避免在数组中循环,但仍希望更改行,请执行此操作

m = np.array([[1,2,3],[1,2,3]])
y = array([1, 1, 1])
for i in m:
    i -= y