使用多个布尔数组进行索引和分配

时间:2015-04-28 20:38:38

标签: python arrays numpy indexing assign

我刚刚遇到以下问题我真的不明白:

import numpy as np
a = np.arange(10)
m = a < 5
n = a[m] < 2

print a[m][n]
# array([0, 1])

到目前为止一切顺利。问题出现了:

a[m][n] *= 10000
print a[m][n]
# array([0, 1])

我不明白为什么赋值a [m] [n] * = 10000不起作用。我确信如果我只使用一个数组进行索引就可以了:

a[m] *= 10000
print a[m]
# array([    0, 10000, 20000, 30000, 40000])

对此有任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

命令:

a[m] *= 1000

执行in-place assignment,而:

a[m][n] *= 1000

首先创建一个新数组a[m]并为新副本执行就地分配,这就是原始数组未被修改的原因。