gpt4 book ai didi

python - 动态追加N维数组

转载 作者:太空宇宙 更新时间:2023-11-03 15:57:38 26 4
gpt4 key购买 nike

如果每个数组的形状为 (1000, 2, 100),则很容易使用

con = np.concatenate((array_A, array_B))

将它们连接起来,因此 con 的形状为 (2000, 2, 100)。

我想在函数中动态 append 或连接“con”。该步骤描述如下:

First, read data from the first file and process data to generate an array.

Secondly, read date from the second file and append generated array into the first array

....

def arrayappend():
for i in range(n):
#read data from file_0 to file_n-1
data = read(file_i)
#data processing to generate an array with shape (1000, 2, 100)
con = function(data)
# append con

最佳答案

假设您的所有文件都生成相同的形状对象,并且您希望在第一维上将它们连接起来,有多种选择:

 alist = []
for f in files:
data = foo(f)
alist.append(f)
arr = np.concatenate(alist, axis=0)

concatenate 接受一个列表。如果您想添加新轴(np.array(alist)np.stack 等),则有一些变化。

追加到列表很快,因为它只意味着添加一个指向data对象的指针。 concatenate 从组件创建一个新数组;它已编译,但仍然相对较慢。

如果您必须/想要在每个阶段创建一个新数组,您可以编写:

 arr = function(files[0])
for f in files[1:]:
data = foo(f)
arr = np.concatenate((arr, data), axis=0)

但是,如果文件加载步骤足够慢,您可能不会注意到差异,这可能会更慢。

小心的话,您可以从arr = np.zeros((0,2,100))开始并读取循环中的所有文件。您必须确保初始“空”数组具有兼容的形状。新用户经常会遇到这样的问题。

关于python - 动态追加N维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40634855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com