将元素添加到数组

时间:2017-08-22 18:49:10

标签: python arrays numpy

我想创建一个空数组并在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,...],...]

非常感谢

1 个答案:

答案 0 :(得分:2)

两者都不使用。 np.append只是调用concatenate的另一种方式,一种采用2个参数而不是列表。因此两者都相对昂贵,每次调用都会创建一个新数组。正如您可能已经发现的那样,很难让初始值正确。

List append是构建数组的正确方法。结果将是列表或列表列表。这可以在最后变成带有np.arraystack(连接)函数之一的数组。

尝试:

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变成一个二维数组。