我想要一个看起来像这样的numpy数组:
X = np.array([[10, 20], [20, 25], [30, 16], [40, 18], [50, 90], [60, 87]])
我目前有一些从firestore中检索到的字典值:
doc_ref = db.collection('CPU Logs')
query_ref = doc_ref.where(u'testData', u'==', True).order_by(u'logId')
docs = query_ref.get()
我遍历它们并将键值分配给两个变量id
和usage
,然后再将它们添加到数组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)
但是两者似乎都不起作用,因为print语句仅打印出[]
。
答案 0 :(得分:4)
看看the docs for insert
和flatten
:它们都返回新的数组(副本)。所以你需要写
X = np.insert(a, [0, 0], toAppend)
,以便X
包含扩展数组。我也认为您不需要前面的X.flatten()
。
您应该考虑只构建一个嵌套的list
并在末尾只转换一次,而不是插入一个numpy数组(这很昂贵)。