Я занимаюсь машинным обучением в python / numpy, в котором я хочу проиндексировать 2-мерный ndarray с 1-D ndarray, чтобы я получил 1-D массив с индексированными значениями.
Я заставил его работать с некрасивым фрагментом кода, и я хотел бы знать, есть ли лучший способ, потому что это кажется неестественным для такой хорошей комбинации языка и модулей, как python + numpy.
a = np.arange(50).reshape(10, 5) # Array to be indexed
b = np.arange(9, -1, -2) # Indexing array
print(a)
print(b)
print(a[b, np.arange(0, a.shape[1]).reshape(1,a.shape[1])])
#Prints:
[[ 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]
[25 26 27 28 29]
[30 31 32 33 34]
[35 36 37 38 39]
[40 41 42 43 44]
[45 46 47 48 49]]
[9 7 5 3 1]
[[45 36 27 18 9]]
Это именно то, что я хочу (хотя технически это 2-ой снимок), но это кажется очень сложным.Есть ли более аккуратный и аккуратный способ?
Редактировать: Чтобы уточнить, я на самом деле не хочу одномерный массив, который был очень плохо объяснен.Я на самом деле хочу одно измерение с длиной 1, потому что это то, что мне нужно для его обработки позже, но это легко сделать с помощью оператора reshape()
.Извините за путаницу, я просто смешал свой реальный код с более общим вопросом.