これは重複していると確信していますが、実際には答えが見つからなかったのです。インデックスのリストでメモリビューをスライスする
私の主な問題は、私のコードでnumpyブールインデックスを使用していることです。私はそれを最適化しています。私はそれを毎回reslicing避けるように私は、いくつかの計算のためにそれを使用しているため
y_ind = ~isnan(y)
otheThing = y[t,y_ind[t,:]]
私はotherThing
でこのスライスを保存する理由は次のとおりです。
私のような何かをします。
私の解決策はとotherThing
にnp.ndarray
の代わりにメモリビューを使用することでした。
問題は、booleanインデックスがcythonでは機能しないため、整数リストでスライスしようとしていることです。我々はnumpyの中だろうと同じように、のようなもの:私たちはそれをしようとするとどうなります
x = np.random.randn(5,5)
array([[-0.56313056, -1.27834803, -0.30052179, -2.00063006, -2.05059544],
[-0.44563071, -0.63580159, -0.67538499, -0.9192516 , 0.49663121],
[ 2.11943794, -0.51746142, -0.80092609, -0.89391932, 1.91359607],
[ 0.52593344, -0.59931707, 0.78093441, -1.62449658, -1.65887717],
[-0.46422764, 0.96595406, -0.47142008, -0.28886925, -1.86674776]])
x[2,[1,2]]
array([-0.51746142, -0.80092609])
のようなものされています
cdef np.ndarray[np.double_t,ndim=2] a = np.random.randn(n,n)
cdef double[:,:] a_mv = a
print(np.array(a_mv[5,(1,3)]))
.pyx:30:27: Invalid index for memoryview specified, type (long, long)
In [22]:
それは可能ですか?より良いアプローチがありますか?
質問を編集して、 'cython'の問題を強調しました。 – hpaulj
誰かが理由を説明せずに質問に投票しました。 –