2016-03-15 137 views
2

我在一个数组中具有形式(索引,值)的元素,例如如何在某些索引中将一个numpy数组中的元素添加到另一个数组中?

5, 20 
8, 10 

我需要将这些元素添加到另一个最初为空的不同大小的数组中,

X = np.zeros((1, 10)) 

并将X的值设置为第一个数组中索引处给出的值。所以X,到了最后,应

X = [0, 0, 0, 0, 0, 20, 0, 0, 10, 0] 

由于X的第5个元素应该是20,而第8元素应该是10.是否有一个numpy的阵列功能,这是否,或别的东西,我可以使用为了快速计算?

回答

1

您正在寻找np.add.at。因此,假设X1D阵列,其中所述添加是要被存储,并且将被添加A阵列保持的索引和值,可以执行 -

np.add.at(X,A[:,0],A[:,1]) 

因此,输入是:

X  : Array holding the additions 
A[:,0] : Indices where additions are to be stored 
A[:,1] : Values to be added 

采样运行 -

In [21]: A = np.array([[5,20],[8,10]])  # Indices and values 

In [22]: X = np.zeros(10,dtype=A.dtype)  # Array to store additions 

In [23]: np.add.at(X,A[:,0],A[:,1])   # Perform np.add.at 

In [24]: X         # Show output 
Out[24]: array([ 0, 0, 0, 0, 0, 20, 0, 0, 10, 0]) 

如果 “添加”,哟你的意思是索引是唯一的,你只是想要“放”数值,而不是“增加”,你可以初始化输出数组和索引到它里面,就像这样一个样例 -

In [25]: A = np.array([[5,20],[8,10]]) 

In [26]: X = np.zeros(10,dtype=A.dtype) 

In [27]: X[A[:,0]] = A[:,1] 

In [28]: X 
Out[28]: array([ 0, 0, 0, 0, 0, 20, 0, 0, 10, 0]) 
相关问题