我想创建一个空数组并在for循环中添加多个不同的值。我应该使用append或concatenate吗?代码几乎正常工作。
values=np.array([[]])
for i in range(diff.shape[0]):
add=np.array([[i,j,k,fScore,costMST,1]])
values=np.append([values,add])
结果应该是
[[0,...],[1,...],[2,...],...]
非常感谢
答案 0 :(得分:2)
两者都不使用。 np.append
只是调用concatenate
的另一种方式,一种采用2个参数而不是列表。因此两者都相对昂贵,每次调用都会创建一个新数组。正如您可能已经发现的那样,很难让初始值正确。
List append是构建数组的正确方法。结果将是列表或列表列表。这可以在最后变成带有np.array
或stack
(连接)函数之一的数组。
尝试:
values=[]
for i in range(diff.shape[0]):
add=np.array([[i,j,k,fScore,costMST,1]])
values.append(add)
values = np.stack(values)
由于add
是2d,因此使用stack
会产生3d。您可能需要vstack
代替(或np.concatenate(values, axis=0)
是相同的事情)。
或尝试:
values=[]
for i in range(diff.shape[0]):
add=[i,j,k,fScore,costMST,1]
values.append(add)
values = np.array(values)
这会列出一个列表,np.array
变成一个二维数组。