python - 在循环中逐行填充数组
问题描述
假设我有一个循环,它从一个空数组开始逐行创建一个数组。例子:
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 添加一条线”,其中一条线在所有情况下都有效?
解决方案
等到最后将列表列表转换为 numpy 数组
a = []
for i in range(3):
line = [i, i + 1, i + 2]
a.append(line)
a = np.array(a)
print(a)
推荐阅读
- javascript - 如何在 Firebase(实时数据库)中链接 google home graph 概念
- api - 不离开IDE就可以得到一个库的api引用?
- mongodb - MongoDb 中的聚合计数值
- variables - 无法在 Ansible 中为 set_fact 设置默认值
- python - 检测 QPixmap 警告
- c# - 如何使用数据注释为模型属性 WebApi .NET Core 添加布尔验证
- mysql - Laravel Eloquent:在删除记录时保留索引的 AUTO_INCREMENT
- couchbase - 将索引和用户从 Couchbase 5.1 移动到 Couchbase 6.0
- symfony - 用于电子邮件的 DomCrawler filterXpath
- javascript - 在浏览器上按下后退按钮时忽略查询参数