Проблема заключается в форме исходного массива:
In [1]: arr = np.array([[], []])
In [2]: arr
Out[2]: array([], shape=(2, 0), dtype=float64)
In [3]: arr[0]
Out[3]: array([], dtype=float64)
In [4]: arr[0][0]
...
IndexError: index 0 is out of bounds for axis 0 with size 0
Думайте об этом массиве как о 2 строках, 0 столбцах.Вы не можете ссылаться на несуществующий столбец.И, в отличие от некоторых других языков, вы не можете увеличивать массив, просто ссылаясь на новый индекс.После создания размер фиксируется.
В то время как другие показали хорошие подходы к пониманию списка, я покажу, как правильно использовать ваш подход:
In [8]: lengthrow, lengthcol = 2,3 # or user input
In [9]: arr = np.zeros((lengthrow, lengthcol), dtype=int) # large enough array
In [10]: arr
Out[10]:
array([[0, 0, 0],
[0, 0, 0]])
In [11]: for i in range(2):
...: for j in range(3):
...: arr[i,j] = int(input(f'{i},{j}:'))
...:
0,0:0
0,1:1
0,2:2
1,0:3
1,1:4
1,2:5
In [12]: arr
Out[12]:
array([[0, 1, 2],
[3, 4, 5]])