有没有更好的方法使用FOR循环在numpy中创建多维数组,而不是创建列表?这是我能提出的唯一方法:
a = np.array([range(1,6),range(1,6)])
a.shape = (5,2)
print(f'Type(a) = {type(a)}. a = {a}')
编辑:我尝试过这样的事情:
{{1}}
但是,输出不一样。我确定我错过了一些基本的东西。
答案 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