#python #arrays #numpy #multidimensional-array
#python #массивы #numpy #многомерный массив
Вопрос:
Я новичок в numpy, я не понимаю, как работает следующее:
np.array([range(i, i 3) for i in [2, 4, 6]])
и результат:
array([[2, 3, 4],[4, 5, 6],[6, 7, 8]])
Ответ №1:
Вы понимаете понимание списков? range
?
In [12]: [range(i, i 3) for i in [2, 4, 6]]
Out[12]: [range(2, 5), range(4, 7), range(6, 9)]
np.array
преобразует range
объекты в списки, а затем создает массив.
In [13]: [list(range(i, i 3)) for i in [2, 4, 6]]
Out[13]: [[2, 3, 4], [4, 5, 6], [6, 7, 8]]
In [14]: np.array([list(range(i, i 3)) for i in [2, 4, 6]])
Out[14]:
array([[2, 3, 4],
[4, 5, 6],
[6, 7, 8]])
Так что, по сути, это просто вариант примера из учебника по созданию массива из списка списков:
In [15]: np.array([[1,2,3],[10,11,12]])
Out[15]:
array([[ 1, 2, 3],
[10, 11, 12]])
Комментарии:
1. Я понимаю вход и выход [12]. Чего я не понимаю, так это того, что если range равен (i, i 3) для i в [2, 4, 6], как выводится массив [2, 3, 4], [4, 5, 6], [6, 7, 8]?
2. Это
range(i, i 3)
. Итак, еслиi
is2
, мы получаемrange(2,5)
, который расширяется до списка is[2,3,4]
.