#python #numpy #machine-learning
Вопрос:
печать(s0[3][0][0]) дает мне 1
но печать(s0[3][0]) дает мне [1]
как мне сделать так, чтобы печать(s0[3][0]) давала мне 1?
S0-это числовая матрица из 100 строк
S0 =
[[[ 1. ]
[-0.91903376]
[ 0.18724527]]
[[ 1. ]
[ 0.87834638]
[-0.88794145]]
[[ 1. ]
[-0.75320818]
[ 0.59000726]]]
небольшая выборка ^
Комментарии:
1. У вас есть 3-мерная матрица, вы хотите 2-мерную? Снимите внутренние скобки и вставьте запятые между числами, т. е.
S0 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
.2.
s0[3,0,0]
выбирает элемент из 3d-массива. Похоже, у вас есть массив в форме (3,3,1). Вы читали обshape
этом иreshape
?
Ответ №1:
Потратьте некоторое время, чтобы ознакомиться numpy
с основами. Ключ вот shape
в чем . У вас есть 3d массив:
In [122]: arr = np.arange(9).reshape(3,3,1)
In [123]: arr
Out[123]:
array([[[0],
[1],
[2]],
[[3],
[4],
[5]],
[[6],
[7],
[8]]])
In [124]: arr.shape
Out[124]: (3, 3, 1)
Вы можете индексировать такой массив с помощью
In [125]: arr[:,:,0]
Out[125]:
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
In [126]: _.shape
Out[126]: (3, 3)
arr[0][0][0]
работает, но arr[0,0,0]
понятнее.
Вы также можете получить 2d-массив из этого с reshape
помощью (обратите внимание, что я использовал reshape
для создания исходного массива из массива 1d arange
.
In [127]: arr.reshape(3,3)
Out[127]:
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
Отображение (и ввод) со всеми [] и запятыми хорошо подходит для просмотра массивов, но чем скорее вы познакомитесь с shape
(и reshape
) вашим numpy
кодированием, тем проще будет.
Комментарии:
1. спасибо вам за совет! я изучу основы
Ответ №2:
Как упоминалось выше, массив S0 представляет собой трехмерный массив. Чтобы получить одно значение из этого трехмерного массива, вам нужно иметь три индекса. Чтобы получить значение с использованием двух индексов (S0[i][j]), вы должны преобразовать его в 2-d массив.
напр.-
S1 =[[1.0, -0.91903376, 0.18724527],
[1.0, 0.87834638, -0.88794145],
[1.0, -0.75320818, 0.59000726]]
S1[0][0] теперь даст 1.0