【问题标题】:best way to create numpy array from FOR loop从 FOR 循环创建 numpy 数组的最佳方法
【发布时间】:2018-06-15 10:23:21
【问题描述】:

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

import numpy as np

a = []
for x in range(1,6):
    for y in range(1,6):
        a.append([x,y])
a = np.array(a)
print(f'Type(a) = {type(a)}.  a = {a}')

编辑:我尝试做这样的事情:

a = np.array([range(1,6),range(1,6)])
a.shape = (5,2)
print(f'Type(a) = {type(a)}.  a = {a}')

但是,输出不一样。我确定我缺少一些基本的东西。

【问题讨论】:

标签: python python-3.x numpy


【解决方案1】:

您可以在分配相应的值之前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

【讨论】:

    【解决方案2】:

    你可以用itertools.product替换双for循环。

    from itertools import product 
    import numpy as np
    
    np.array(list(product(range(1,6), range(1,6))))
    

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

    【讨论】:

      【解决方案3】:

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

      a = np.ndindex(6,6)
      

      您可以了解更多关于Is there a Python equivalent of range(n) for multidimensional ranges?的信息

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-11
        • 2021-09-11
        • 1970-01-01
        • 2023-03-29
        • 1970-01-01
        • 1970-01-01
        • 2021-07-01
        • 1970-01-01
        相关资源
        最近更新 更多