numpy 在Python中对数组执行特定操作

qmelpv7a  于 2022-12-13  发布在  Python
关注(0)|答案(2)|浏览(122)

我有两个数组IX。我想执行一个操作,基本上是从I中获取索引,并使用X中的值。例如,I[0]=[0,1],我想计算X[0]X[1],然后计算X[0]-X[1],并追加到一个新数组T中。类似地,对于I[1]=[1,2],我想计算X[1]X[2],然后计算X[1]-X[2],并将其追加到T

import numpy as np
I=np.array([[0,1],[1,2]])
X=np.array([10,5,3])

预期输出为

T=array([[X[0]-X[1]],[X[1]-X[2]]])
eivgtgni

eivgtgni1#

最基本的方法是将嵌套索引与np.append()函数一起使用。
其工作原理如下:

T = np.append(X[I[0][0]] - X[I[0][1]], X[I[1][0]] - X[I[1][1]])

其中,X[I[0][0]]表示提取I[0][0]的值,并将其用作数组X的索引。
您也可以实作循环来执行此动作:

T = np.array([], dtype="int64")
for i in range(I.shape[0]):
    for j in range(I.shape[1]-1):
        T = np.append(T, X[I[i][j]] - X[I[i][j+1]])

如果你觉得这个答案有帮助,请接受我的答案。谢谢。

bvjxkvbb

bvjxkvbb2#

你可以使用整数数组索引来实现这一点。对于大型数组,使用for循环(如当前接受的答案)比使用矢量化操作要慢得多。

import numpy as np

I = np.array([[0, 1], [1, 2]])
X = np.array([10, 5, 3])
T = X[I[:, 0:1]] - X[I[:, 1:2]]

相关问题