【发布时间】:2021-04-23 20:50:08
【问题描述】:
我知道那里有类似的问题,但我找不到我正在寻找的信息。 我有一个 numpy 数组列表,我想将它们相互附加以形成一个特征矩阵。
我可以像这样得到想要的结果:
a = [1,2,3]
b = [4,5,6]
c = [7,8,9]
d = [10,11,12]
new_array = numpy.append(a, b, 1)
new_array = numpy.append(new_array, c, 1)
new_array = numpy.append(new_array, d, 1)
但这显然不是正确的方法,因为如果我不指定要附加我的名字的数组,它的解决方法非常不雅而且不起作用。 我想做这样的事情:
value = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
for subval, index in enumerate(value):
new_array = numpy.append(subval[index], subval[index+1], 1)
我不能只做类似new_array = numpy.append(value[0], value[1],1) 的事情,因为value 的长度可能会有所不同。
现在的问题是,如何正确地做到这一点?
我也发现了类似concat 方法的东西,但是我的数学知识还不足以理解它是否与第一个代码示例相同?
非常感谢任何帮助
【问题讨论】:
-
np.concatenate([a,b,c,d])? -
会和 append 一样吗?
-
concatenate更好,因为它只分配一次所需的内存。迭代append将多次复制数组,例如,您的第一个数组被复制n-1次。 -
append是一种调用concatenate的方式,仅使用 2 个数组而不是它们的整个列表。阅读它的源代码。这是一个名称不佳(使用不当)的函数。
标签: python arrays numpy append concatenation