【问题标题】:Concatenate only extant non-empty numpy arrays?仅连接现有的非空 numpy 数组?
【发布时间】:2012-07-31 16:52:16
【问题描述】:

这应该很容易......

我想连接数组 A、B 和 C。其中一个或多个可能不存在或为空。我希望将剩余的数组连接起来。例如,如果 B 为空,我想将 A 与 C 连接起来。

我已经阅读了这些似乎相关的问题:

How can I check whether the numpy array is empty or not?

How do you 'remove' a numpy array from a list of numpy arrays?

我假设有一个 1-2 行的方式来做到这一点。

【问题讨论】:

  • 你说“可能不存在”是什么意思?
  • A、B 和 C 是列表中的数组,我可能会采用超出范围的索引。但为了更笼统地说,可能没有生成 A、B 和/或 C 的任何情况。

标签: arrays numpy concatenation


【解决方案1】:

连接空数组不是问题:

In [1]: a = np.arange(10)

In [2]: b = np.array([])

In [3]: c = np.arange(3)

In [4]: np.concatenate((a,b,c))
Out[4]: array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9.,  0.,  1.,  2.])

对于二维数组:

In [1]: a = np.arange(12.0).reshape((4,3))

In [2]: b = np.arange(24.0).reshape((8,3))

In [3]: c = np.array([])

In [4]: np.concatenate([x for x in [a,b,c] if x.size > 0])
Out[4]: 
array([[  0.,   1.,   2.],
       [  3.,   4.,   5.],
       [  6.,   7.,   8.],
       [  9.,  10.,  11.],
       [  0.,   1.,   2.],
       [  3.,   4.,   5.],
       [  6.,   7.,   8.],
       [  9.,  10.,  11.],
       [ 12.,  13.,  14.],
       [ 15.,  16.,  17.],
       [ 18.,  19.,  20.],
       [ 21.,  22.,  23.]])

【讨论】:

  • 我知道,但这些不是一维数组,除非它们是空的。
  • @TristanKlassen:阵列是什么形状的?如果它们不是一维的,那么你还应该准确地说明你说“连接”时的意思。
  • 2D。沿轴连接,保证它们的大小相同,除非它们是空的。
  • @user545424 - 你是否跳过了关于数组是 numpy 的解释部分?
  • @StefanH,这个问题被标记为 [numpy]。
猜你喜欢
  • 2014-05-09
  • 1970-01-01
  • 2021-12-24
  • 2018-05-05
  • 2016-05-20
  • 1970-01-01
  • 2017-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多