在循环

时间:2015-07-01 12:05:57

标签: python arrays numpy

我在NumPy中遇到数组操作问题。如果我创建两个数组xy,并执行

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

3 个答案:

答案 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