Как интерпретировать этот вид индексации NumPy: a [2 :: 2, :: 2]? - PullRequest
1 голос
/ 23 января 2020

Может кто-нибудь сказать, как интерпретировать этот вид адресации: a [2 :: 2, :: 2]? Я понятия не имею, как использовать этот вид индексации.

a = np.random.random((6,6))
print(a)
[[0.17948771 0.61436323 0.48768101 0.20540278 0.15331527 0.17766787]
 [0.40028608 0.63915391 0.92719741 0.56604286 0.92959065 0.92707981]
 [0.27554561 0.09253335 0.73841082 0.00840638 0.33683454 0.89065058]
 [0.25030938 0.37093169 0.70789081 0.95205777 0.60483874 0.81425781]
 [0.14250593 0.56916738 0.45440191 0.21140548 0.72945015 0.59313599]
 [0.68116512 0.45349473 0.23057609 0.36349226 0.622701   0.07951557]]

a[2::2, ::2]
array([[0.27554561, 0.73841082, 0.33683454],
       [0.14250593, 0.45440191, 0.72945015]])

1 Ответ

6 голосов
/ 23 января 2020

a[2:] вернет срез a из индекса 2 в конец списка. a[2::2] будет делать то же самое, но будет возвращать только каждое второе значение, a[2::3] каждое третье и т. Д. c .. Так что если

a = [0,1,2,3,4]

, то a[2::2] будет [2,4] (от 2 до 4, но только каждую секунду). Для numpy массивы a[2:,:] вернут срез a, начиная с индекса 2 первого измерения и всей совокупности второго измерения. Таким образом, a[2::2, ::2] будет возвращать только каждый второй элемент по сравнению с a[2:,:].

В вашем примере возвращаемые элементы имеют следующие индексы

[[(2,0), (2,2), (2,4)], [(4,0), (4,2), (4,4)]]
...