首页 > 解决方案 > 在循环中逐行填充数组

问题描述

假设我有一个循环,它从一个空数组开始逐行创建一个数组。例子:

import numpy

a = []
for i in range(3):
    line = numpy.array([i, i + 1, i + 2])
    a = numpy.append(a, line)
print(a)

这会创建一个数组a = [0. 1. 2. 1. 2. 3. 2. 3. 4.],但我更想要一个 3x3 数组:

[[0. 1. 2.]
 [1. 2. 3.]
 [2. 3. 4.]]

如果我使用numpy.vstack代码不起作用时a=[]

import numpy

a = []
for i in range(3):
    line = numpy.array([i, i + 1, i + 2])
    a = numpy.vstack([a, line]) # Error here
print(a)

作为解决方案,我可以插入if

import numpy

a = []
for i in range(3):
    line = numpy.array([i, i + 1, i + 2])
    if (len(a) == 0):
        a = numpy.append(a, line)
    else:
        a = numpy.vstack([a, line])
print(a)

然而,这似乎相当麻烦。

有没有更好的方法来“向数组 a 添加一条线”,其中一条线在所有情况下都有效?

标签: pythonarrays

解决方案


等到最后将列表列表转换为 numpy 数组

a = []
for i in range(3):
    line = [i, i + 1, i + 2]
    a.append(line)
a = np.array(a)
print(a)

推荐阅读