Python 在循环中修改NumPy数组
我在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 这正是我所期望的 这与
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