【发布时间】:2020-09-24 19:32:07
【问题描述】:
我是 numpy 的新手,我不明白以下是如何工作的:
np.array([range(i, i + 3) for i in [2, 4, 6]])
输出是:
array([[2, 3, 4],[4, 5, 6],[6, 7, 8]])
【问题讨论】:
标签: python arrays numpy multidimensional-array
我是 numpy 的新手,我不明白以下是如何工作的:
np.array([range(i, i + 3) for i in [2, 4, 6]])
输出是:
array([[2, 3, 4],[4, 5, 6],[6, 7, 8]])
【问题讨论】:
标签: python arrays numpy multidimensional-array
你了解列表推导吗? 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]])
【讨论】:
range(i, i+3)。所以如果i 是2,我们得到range(2,5),扩展为一个列表是[2,3,4]。