将一个数组添加到numpy数组中

4

我希望拥有一个类似于以下结构的numpy数组:

X = np.array([[10, 20], [20, 25], [30, 16], [40, 18], [50, 90], [60, 87]])

我目前从Firestore获取字典值:

我目前从Firestore获取字典值:

doc_ref = db.collection('CPU Logs')
query_ref = doc_ref.where(u'testData', u'==', True).order_by(u'logId')
docs = query_ref.get()

我循环遍历它们并将键值分配给2个变量idusage,然后将它们添加到数组toAppend中:

for doc in docs:
    values = doc.to_dict()
    id = values['logId']
    usage = values['usage']
    toAppend = [id, usage]

如果id为10,使用量为30,则toAppend应该类似于[10, 30]。现在,我尝试将其添加到一个空的numpy数组中,但遇到了困难。我已经尝试插入:
X = np.array([])
for doc in docs:
    values = doc.to_dict()
    id = values['logId']
    usage = values['usage']
    toAppend = [id, usage]
    a = X.flatten()
    np.insert(a, [0,0], toAppend)

print(X)

以及追加:

np.append(X, toAppend)

但是两者似乎都不起作用,因为打印语句只会打印出[]

1
这些方法会返回附加了对象的数组,因此您应该按照文档中所述编写result = np.insert(a, [0,0], toAppend) - Luca Cappelletti
列表的追加操作是就地执行的;np.append是一个名字不太好的模拟函数,给很多用户造成了困扰。使用np.array和np.concatenate(以及stack变量)都需要传入一个数组列表。建议使用它们。 - hpaulj
1个回答

6
请查看 insertflatten 的文档:它们都返回新的数组(副本)。所以你需要编写:
X = np.insert(a, [0, 0], toAppend)

为了让 X 包含扩展数组,我认为您不需要先使用 X.flatten()。建议您考虑构建一个嵌套的 list,并在最后一次性进行转换,而不是插入到 numpy 数组中(这很耗费资源)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接