Многомерный массив Numpy

#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 is 2 , мы получаем range(2,5) , который расширяется до списка is [2,3,4] .