Aku sudah gila mencoba mencari tahu hal bodoh apa yang aku lakukan salah di sini.
Saya menggunakan NumPy, dan saya memiliki indeks baris tertentu dan indeks kolom tertentu yang ingin saya pilih. Inilah inti dari masalah saya:
import numpy as np
a = np.arange(20).reshape((5,4))
# array([[ 0, 1, 2, 3],
# [ 4, 5, 6, 7],
# [ 8, 9, 10, 11],
# [12, 13, 14, 15],
# [16, 17, 18, 19]])
# If I select certain rows, it works
print a[[0, 1, 3], :]
# array([[ 0, 1, 2, 3],
# [ 4, 5, 6, 7],
# [12, 13, 14, 15]])
# If I select certain rows and a single column, it works
print a[[0, 1, 3], 2]
# array([ 2, 6, 14])
# But if I select certain rows AND certain columns, it fails
print a[[0,1,3], [0,2]]
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# ValueError: shape mismatch: objects cannot be broadcast to a single shape
Mengapa ini terjadi? Tentunya saya harus bisa memilih baris 1, 2, dan 4, dan kolom 1 dan 3? Hasil yang saya harapkan adalah:
a[[0,1,3], [0,2]] => [[0, 2],
[4, 6],
[12, 14]]