1

「ダブル」スライスがどこで機能しないのか理解できませんか?

>>> t
array([False,  True,  True,  True], dtype=bool)
>>> np.where(t[:3])
(array([1, 2]),)

しかし:

>>> np.where(t[1:3])
(array([0, 1]),)
4

1 に答える 1

2

np.where切り出した内容の完全なコンテキストがわからないため、これが期待される出力です。最初にスライスされた配列を見てください。

In [384]: t[:3]
Out[384]: array([False,  True,  True], dtype=bool)
        #        0       1      2

In [385]: np.where(t[:3])
Out[385]: (array([1, 2]),)

In [386]: t[1:3]
Out[386]: array([ True,  True], dtype=bool)
        #         0      1

In [387]: np.where(t[1:3])
Out[387]: (array([0, 1]),)

2 番目では、最初の要素をスキップしています。から開始します1が、最初の要素は0次のとおりです。

In [388]: t[0:3]
Out[388]: array([False,  True,  True], dtype=bool)
        #        0       1      2

In [389]: np.where(t[0:3])
Out[389]: (array([1, 2]),)

元の配列からインデックスが必要な場合は、@BiRico が上記で示唆しているように、いくつかの計算を行う必要があります (ただし、最初にタプルから最初の要素を取得するように注意してください)。

In [390]: n = 1

In [391]: np.where(t[n:3])[0] + n
Out[391]: array([1, 2])
于 2013-09-13T22:39:17.390 に答える