1

最初の次元を除くすべての次元でゼロを想定する配列をスライスする必要があります。

与えられた配列:

x = numpy.zeros((3,3,3))

次の動作が必要ですが、事前に次元数を知る必要はありません。

y = a[:,0,0]

基本的に、 Ellipsisの代わりになるものを探していますが、必要な数の:オブジェクトに拡張するのではなく、必要な数のゼロに拡張します。

このために組み込まれているものはありますか?そうでない場合、必要な機能を取得するための最良の方法は何ですか?



編集:
これを行う1つの方法は、次を使用することです:

y = x.ravel(0:temp.shape[0])

これは問題なく動作しますが、場合によっては (私の場合など) ravel、ビューの代わりに配列のコピーを作成する必要があります。私は大きな配列を扱っているので、よりメモリ効率の良い方法が必要です。

4

2 に答える 2

3

次のように、インデックスのタプルを作成できます。

x = arange(3*3*3).reshape(3,3,3)

s = (slice(None),) + (0,)*(x.ndim-1)

print x[s]  # array([ 0,  9, 18])
print x[:,0,0] # array([ 0,  9, 18])

あなたもできると思います:

x.transpose().flat[:3]

しかし、私は最初のアプローチを好みます。これは、(最初の次元だけではなく) どの次元でも機能するためx[:,0,0]です。また、構文が異なるだけなので、単に を書くのと明らかに同等に効率的です。

于 2013-01-11T03:59:44.357 に答える
0

私は通常、tom10 の方法を使用しますが、別の方法を次に示します。

for i in range(x.ndim-1):
    x = x[...,0]
于 2013-01-11T19:01:18.693 に答える