相关疑难解决方法(0)

使用重复索引增加Numpy数组

我有一个Numpy数组和一个索引列表,其值我想增加一个.此列表可能包含重复索引,我希望增量与每个索引的重复次数一致.没有重复,命令很简单:

a=np.zeros(6).astype('int')
b=[3,2,5]
a[b]+=1
Run Code Online (Sandbox Code Playgroud)

有了重复,我想出了以下方法.

b=[3,2,5,2]                     # indices to increment by one each replicate
bbins=np.bincount(b)
b.sort()                        # sort b because bincount is sorted
incr=bbins[np.nonzero(bbins)]   # create increment array
bu=np.unique(b)                 # sorted, unique indices (len(bu)=len(incr))
a[bu]+=incr
Run Code Online (Sandbox Code Playgroud)

这是最好的方法吗?假设np.bincountnp.unique操作会产生相同的排序顺序是否存在风险?我错过了一些简单的Numpy操作来解决这个问题吗?

python indexing numpy

15
推荐指数
2
解决办法
6101
查看次数

如何在Python中向量化增量

我有一个二维数组,并且有一些数字要添加到某些单元格中。我想对操作进行矢量化以节省时间。问题是当我需要将多个数字添加到同一单元格时。在这种情况下,矢量化代码仅添加最后一个。“ a”是我的数组,“ x”和“ y”是我要增加的单元格的坐标,“ z”包含我要添加的数字。

import numpy as np

a=np.zeros((4,4))
x=[1,2,1]
y=[0,1,0]
z=[2,3,1]
a[x,y]+=z
print(a)
Run Code Online (Sandbox Code Playgroud)

如您所见,a [1,0]应该增加两次:一个乘以2,一个乘以1。因此,期望的数组应该是:

[[0. 0. 0. 0.]
 [3. 0. 0. 0.]
 [0. 3. 0. 0.]
 [0. 0. 0. 0.]]
Run Code Online (Sandbox Code Playgroud)

但是我得到了:

[[0. 0. 0. 0.]
 [1. 0. 0. 0.]
 [0. 3. 0. 0.]
 [0. 0. 0. 0.]]
Run Code Online (Sandbox Code Playgroud)

使用for循环可以轻松解决该问题,但是我想知道是否可以正确向量化此操作。

python numpy vectorization

5
推荐指数
1
解决办法
122
查看次数

Numpy:给定递增所需的索引,递增数组的元素

我正在尝试将二阶张量转换为二元三阶张量。给定一个二阶张量作为 amxn numpy 数组:A,我需要取每个元素值:x,在 A 中并将其替换为向量:v,维度等于 A 的最大值,但值 1 递增在 v 对应于值 x 的索引处(即 v[x] = 1)。我一直在关注这个问题:Increment given indices in a matrix,它解决了在由二维坐标给出的索引处产生增量的数组。我一直在阅读答案并尝试使用 np.ravel_multi_index() 和 np.bincount() 来做同样的事情,但使用 3 维坐标,但是我不断收到 ValueError: "invalid entry in坐标数组"。这是我一直在使用的:

def expand_to_tensor_3(array):
    (x, y) = array.shape
    (a, b) = np.indices((x, y))
    a = a.reshape(x*y)
    b = b.reshape(x*y)
    tensor_3 = np.bincount(np.ravel_multi_index((a, b, array.reshape(x*y)), (x, y, np.amax(array))))
    return tensor_3
Run Code Online (Sandbox Code Playgroud)

如果您知道这里有什么问题或知道实现我的目标的更好方法,那么两者都会非常有帮助,谢谢。

python arrays numpy

4
推荐指数
1
解决办法
8190
查看次数

标签 统计

numpy ×3

python ×3

arrays ×1

indexing ×1

vectorization ×1