2015-04-28 28 views
2

我只是碰到了以下问题来了我真不明白:使用索引多个布尔数组和分配

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]) 

任何帮助,将不胜感激。谢谢!

回答

0

命令:

a[m] *= 1000 

做一个in-place assignment,而:

a[m][n] *= 1000 

首先创建一个新的阵列a[m],做就地分配为新的副本,这就是为什么原始数组未被修改。

+0

好的,谢谢! :) – Joerg

相关问题