向numpy数组追加新行

2024-09-28 05:27:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图在循环中向现有numpy数组追加新行。我尝试过一些方法,包括append、concatenate和vstack,但没有一个能给出我想要的结果。

我试过以下方法:

for _ in col_change:
if (item + 2 < len(col_change)):
    arr=[col_change[item], col_change[item + 1], col_change[item + 2]]
    array=np.concatenate((array,arr),axis=0)
    item+=1

我也尝试过最基本的格式,它仍然给我一个空数组。

array=np.array([])
newrow = [1, 2, 3]
newrow1 = [4, 5, 6]
np.concatenate((array,newrow), axis=0)
np.concatenate((array,newrow1), axis=0)
print(array)

我希望输出为[[1,2,3][4,5,6]…]


Tags: 方法numpynpcol数组itemchangearray
2条回答

如果你想[[1,2,3],[4,5,6]],我可以给你一个不需要appendnp.arange的替代方案,然后重新塑造它:

>>> import numpy as np

>>> np.arange(1,7).reshape(2, 3)
array([[1, 2, 3],
       [4, 5, 6]])

或者创建一个大数组并手动填充(或循环):

>>> array = np.empty((2, 3), int)
>>> array[0] = [1,2,3]
>>> array[1] = [4,5,6]
>>> array
array([[1, 2, 3],
       [4, 5, 6]])

关于您的示例的注释:

在第二个例子中,您忘记保存结果,将其设为array = np.concatenate((array,newrow1), axis=0),然后它就可以工作了(与您想要的不完全一样,但是数组不再是空的)。第一个例子缩进得很严重,不知道变量和/或那里的问题,很难调试。

增量构建数组的正确方法是不要从数组开始:

alist = []
alist.append([1, 2, 3])
alist.append([4, 5, 6])
arr = np.array(alist)

这与

arr = np.array([ [1,2,3], [4,5,6] ])

制作小(或大)样本数组的最常用方法。

即使您有充分的理由使用某些版本的concatenate(hstack、vstack等),也最好收集列表中的组件,并执行一次concatante。

相关问题 更多 >

    热门问题