【问题标题】:How to append an array within a for loop that gets new outputs every loop?如何在每个循环获取新输出的 for 循环中附加一个数组?
【发布时间】:2021-10-08 05:03:41
【问题描述】:

我正在尝试创建一个 for 循环,该循环附加从只能转换为数组的函数生成的数组。以下是代码:

array2 = np.array([])
for i in range(len(fps)):
    array1 = np.array([])
    DataStructs.ConvertToNumpyArray((fps[i]), array1)
    np.append(array1,array2)
    
array2

fps 是一个包含 634 个元素的列表,其中每个元素的长度为 1024。DataStructs.ConvertToNumpyArray 函数一次只能计算一个条目,并将输出存储在一个数组中(上面代码中的数组 1)。 以下是一个条目的输出(有非零元素但在其中):

array([0., 0., 0., ..., 0., 0., 0.])

如何使用 for 循环将所有 634 个元素存储在一个数组中?

【问题讨论】:

    标签: python arrays for-loop append


    【解决方案1】:
    array2 = np.array([])
    for i in range(len(fps)):
        array1 = np.array([])
        DataStructs.ConvertToNumpyArray((fps[i]), array1)
    
        # you need to assign the concatenated array to array2
        array2 = np.append(array2,array1)
        
    array2
    
    
    
    # if you want to have a 2D-array as output, you can do the following:
    
    # initialize the array then assign new elements to it
    array2 = np.zeros(shape=(len(fps),1024))
    for i in range(len(fps)):
        array1 = np.array([])
        DataStructs.ConvertToNumpyArray((fps[i]), array1)
        array2[i] = array1
        
    array2
    
    # or you can use np.concatenate
    array2 = np.zeros(shape=(0,1024))
    for i in range(len(fps)):
        array1 = np.array([])
        DataStructs.ConvertToNumpyArray((fps[i]), array1)
        array2 = np.concatenate((array2,[array1]))
    
    

    【讨论】:

    • 它有效,但问题是它将它们存储在一个中:array([0.,0.,0., ...., 0.,0.,0.]) ,我怎样才能得到它: array([0.,0.,0., ...., 0.,0.,0.],[0.,0.,0., .... , 0.,0.,0.],....[0.,0.,0., ...., 0.,0.,0.])
    • 我在附加代码中尝试了axis=0,但没有成功。
    • @user16470918 你可以使用 np.concatenate 得到一个二维数组。
    猜你喜欢
    • 2014-04-15
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    相关资源
    最近更新 更多