使用多个布尔数组进行索引和分配
Using multiple boolean arrays for indexing and assigning
我刚遇到以下问题我真的不明白:
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])
如有任何帮助,我们将不胜感激。谢谢!
命令:
a[m] *= 1000
执行 in-place assignment,而:
a[m][n] *= 1000
首先创建一个新数组a[m]
,然后对新副本进行就地赋值,这就是未修改原始数组的原因。
我刚遇到以下问题我真的不明白:
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])
如有任何帮助,我们将不胜感激。谢谢!
命令:
a[m] *= 1000
执行 in-place assignment,而:
a[m][n] *= 1000
首先创建一个新数组a[m]
,然后对新副本进行就地赋值,这就是未修改原始数组的原因。