【问题标题】:Using multiple boolean arrays for indexing and assigning使用多个布尔数组进行索引和分配
【发布时间】:2015-04-28 20:38:38
【问题描述】:

我只是遇到了以下我真的不明白的问题:

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

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

【问题讨论】:

    标签: python arrays numpy indexing assign


    【解决方案1】:

    命令:

    a[m] *= 1000
    

    执行in-place assignment,而:

    a[m][n] *= 1000
    

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

    【讨论】:

      猜你喜欢
      • 2020-08-27
      • 2018-07-06
      • 2020-02-14
      • 2021-02-07
      • 2020-03-25
      • 1970-01-01
      • 2017-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多