Я пытаюсь выбрать определенные элементы столбца для каждой строки массива numpy. Например, в следующем примере:Выбор определенного столбца в каждой строке из массива
In [1]: a = np.random.random((3,2))
Out[1]:
array([[ 0.75670668, 0.1283942 ],
[ 0.51326555, 0.59378083],
[ 0.03219789, 0.53612603]])
Я хотел бы, чтобы выбрать первый элемент первой строки, второй элемент второго ряда, а первый элемент третьего ряда. Так что я попытался сделать следующее:
In [2]: b = np.array([0,1,0])
In [3]: a[:,b]
Но это производит следующий вывод:
Out[3]:
array([[ 0.75670668, 0.1283942 , 0.75670668],
[ 0.51326555, 0.59378083, 0.51326555],
[ 0.03219789, 0.53612603, 0.03219789]])
, который явно не то, что я ищу. Есть ли простой способ сделать то, что я хотел бы сделать, не используя циклы?
Действительно. * Slicing * сохраняет данную ось как есть, тогда как то, что вы хотели по обоим измерениям, называется * причудливой индексацией * в документации. – dwf
Вправо. Например, 'a [0: 2,0: 2]' и 'a [[0,1], [0,1]]' возвращают разные вещи. –