我在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
?
答案 0 :(得分:4)
这与numpy矩阵无关,但python如何处理你的
i = i - y
i - y
生成一个新的数组引用。当你把它分配到名字i时,所以我没有被引用它之前的那个,而是新创建的数组。
以下代码将符合您的目的
for idx, i in enumerate(m):
m[idx] = i - y
答案 1 :(得分:3)
更新:我意识到最简单的事情就是
m = m-y
这直接符合我的预期!
答案 2 :(得分:0)
如果使用的示例是您无法避免循环遍历数组但仍希望更改行,请执行此操作
m = np.array([[1,2,3],[1,2,3]])
y = array([1, 1, 1])
for i in m:
i -= y