为什么下面的行不能像我所期望的那样工作?为什么双层数numpy数组的赋值不起作用?
import numpy as np
a = np.array([0,1,2,1,1])
a[a==1][1:] = 3
print a
>>> [0 1 2 1 1]
# I would expect [0 1 2 3 3]
这是'错误'还是有另一种推荐的方式呢?
在另一方面,下面的工作:
a[a==1] = 3
print a
>>> [0 3 2 3 3]
干杯,菲利普
我添加了第二个例子,像我期望的那样工作。我真的没有看到区别。该作业不应该“通过”? – 2009-11-06 13:46:01
我不认为这是正确的。如果你做'a [a == 1] = 3',那实际上会改变a的内容。 – 2009-11-06 13:47:30
@Dave - 我认为这是perimosocodiae是正确的,并且你的反例是由于更像是在numpy内部的黑客创建一个就地操作的外观。 – tom10 2009-11-06 16:12:01