从FOR循环创建numpy数组的最佳方法

时间:2018-01-05 15:17:59

标签: python python-3.x numpy

有没有更好的方法使用FOR循环在numpy中创建多维数组,而不是创建列表?这是我能提出的唯一方法:

a = np.array([range(1,6),range(1,6)])
a.shape = (5,2)
print(f'Type(a) = {type(a)}.  a = {a}')
编辑:我尝试过这样的事情:

{{1}}

但是,输出不一样。我确定我错过了一些基本的东西。

3 个答案:

答案 0 :(得分:0)

你看过numpy.ndindex了吗?这可以解决问题:

a = np.ndindex(6,6)

您可以在Is there a Python equivalent of range(n) for multidimensional ranges?

上获得更多信息

答案 1 :(得分:0)

您可以使用itertools.product替换双重for循环。

from itertools import product 
import numpy as np

np.array([(i, j) for i, j in product(range(1,6), range(1,6))])

对我来说,从列表中创建数组看起来很自然。在这种情况下,不知道如何跳过它们。

答案 2 :(得分:0)

您可以在分配相应值之前preallocate数组:

a = np.empty(shape=(25, 2), dtype=int)
for x in range(1, 6):
    for y in range(1, 6):
        index = (x-1)*5+(y-1)
        a[index] = x, y