【问题标题】:How to trim a a list and generate a numpy 2-D array?如何修剪一个列表并生成一个 numpy 二维数组?
【发布时间】:2013-09-12 05:30:19
【问题描述】:

假设我有一个 numpy 数组:

[[1,2],
 [3,4],
 [5,6,7]]

是否有任何紧凑的方法来修剪数组并使其沿第二维对齐,即

[[1,2],
 [3,4],
 [5,6]]

【问题讨论】:

  • 当你说你有一个 numpy 数组 [[1,2], [3,4], [5,6,7]] 时,它是否打印为 array([[1, 2], [3, 4], [5, 6, 7]], dtype=object)? Numpy 实际上并不支持参差不齐的数组。不过,@SashankGupta 的答案将起作用(将其包装在对 numpy.array 的调用中)。
  • @Dougal 谢谢,我不知道该怎么做。从未使用过 numpy,但我听说数组有很多与列表相似的语法,所以我想我还是会尝试回答。

标签: python arrays list numpy


【解决方案1】:

切片是否适用于 numpy 数组?如果是这样,下面的代码应该可以解决问题。

array = [[1,2],
[3,4],
[5,6,7]]

array = numpy.array([a[:2] for a in array])

我不确定切片是否适用于 numpy 数组,因此如果有误,我将删除此答案。

【讨论】:

  • 我认为在这种情况下这是正确的答案,因为 OP 不可能是 2D numpy 数组。但是,总的来说,这种事情是个坏主意。 Numpy 索引,如a[:,:2],是恒定时间的,没有临时内存成本,也没有永久内存成本;像这样从 listcomp 构建数组是线性时间(沿一个轴),浪费了一堆临时内存构建列表,并且浪费了永久内存来复制数据而不是查看它。
猜你喜欢
  • 2012-11-06
  • 2015-04-22
  • 1970-01-01
  • 2012-04-10
  • 2011-02-04
  • 2019-06-09
  • 2017-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多