【问题标题】:numpy append with more than two arraysnumpy追加两个以上的数组
【发布时间】: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


【解决方案1】:

如果您有 value = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]],只需调用 np.array(value) 即可。

【讨论】:

  • 值列表中的项目已经是数组
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-03
  • 2019-02-06
  • 2018-01-14
  • 2016-04-08
  • 2015-02-21
  • 2014-11-03
  • 2021-04-15
相关资源
最近更新 更多