私はアクセスしたい特定の値を持つ配列x
を持っています。そのインデックスは別の配列によって与えられます。他の配列で効率的にインデックスを付ける配列
例えば、x
は
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
であり、インデックスはNx2の
idxs = np.array([[1,2], [4,3], [3,3]])
のアレイであるIはxの配列を返す関数を希望[1,2]、[X 4,3]、x [3,3]または[7,23,18]である。次のコードはこのトリックを行いますが、おそらくforループを避けることで、大規模な配列の速度を上げたいと思います。
import numpy as np
def arrayvalsofinterest(x, idx):
output = np.zeros(idx.shape[0])
for i in range(len(output)):
output[i] = x[tuple(idx[i,:])]
return output
if __name__ == "__main__":
xx = np.arange(25).reshape(5,5)
idxs = np.array([[1,2],[4,3], [3,3]])
print arrayvalsofinterest(xx, idxs)
や 'X [idxs [すなわちアレイのビューを使用するよりも少ないメモリ効率的である:0]、[:, idxs 1]] '?詳細はこちら - http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#purely-integer-array-indexing – Divakar
@Divakar Haha、ページを更新するたびに更新していますちょうどそれを書いた:) – Alex