fig*_*war 4 python arrays indexing numpy scipy
我遇到了数组索引的问题.假设您有一个数组a和另一个要用作a的索引的数组b,以便为b元素指向的位置分配一些值.
a=numpy.zeros(5)
print a
[ 0. 0. 0. 0. 0.]
Run Code Online (Sandbox Code Playgroud)
现在我想两次增加第二个元素
b=numpy.array([1,1])
a[b]+=1.
print a
[ 0. 1. 0. 0. 0.]
Run Code Online (Sandbox Code Playgroud)
虽然我期望有
[ 0. 2. 0. 0. 0.]
Run Code Online (Sandbox Code Playgroud)
如果阵列b没有冗余(其元素的所有值都不同),则没有问题.有人为这样的问题找到了解决方案,避免使用for循环吗?这是一个numpy的错误吗?提前致谢
当您使用整数数组索引另一个数组时,NumPy无法创建足够的视图,因为生成的数组可能无法用步幅表示.因此,它将返回一份副本:
>>> a = np.zeros(5)
>>> b = np.array([1, 1])
>>> c = a[b]
>>> c
array([ 0., 0.])
>>> c.base is a
False
Run Code Online (Sandbox Code Playgroud)
当使用此索引与就地操作一样时+=,NumPy将以不同于您期望的方式解释它.它不是"遍历索引数组并依次对每个元素执行操作",而是首先选择所有索引的值b(在这种情况下,只是一个带索引的元素1),然后对这些元素执行一次操作.
| 归档时间: |
|
| 查看次数: |
247 次 |
| 最近记录: |