NumPy 将不同的数组堆叠在一起

2021-11-06 17:33 更新

多个数组可以沿不同的轴堆叠在一起:

  1. >>> a = np.floor(10 * rg.random((2, 2)))
  2. >>> a
  3. array([[9., 7.],
  4. [5., 2.]])
  5. >>> b = np.floor(10 * rg.random((2, 2)))
  6. >>> b
  7. array([[1., 9.],
  8. [5., 1.]])
  9. >>> np.vstack((a, b))
  10. array([[9., 7.],
  11. [5., 2.],
  12. [1., 9.],
  13. [5., 1.]])
  14. >>> np.hstack((a, b))
  15. array([[9., 7., 1., 9.],
  16. [5., 2., 5., 1.]])

column_stack函数将一维数组作为列堆叠到二维数组中。它等效于hstack仅用于 2D 数组:

  1. >>> from numpy import newaxis
  2. >>> np.column_stack((a, b)) # with 2D arrays
  3. array([[9., 7., 1., 9.],
  4. [5., 2., 5., 1.]])
  5. >>> a = np.array([4., 2.])
  6. >>> b = np.array([3., 8.])
  7. >>> np.column_stack((a, b)) # returns a 2D array
  8. array([[4., 3.],
  9. [2., 8.]])
  10. >>> np.hstack((a, b)) # the result is different
  11. array([4., 2., 3., 8.])
  12. >>> a[:, newaxis] # view `a` as a 2D column vector
  13. array([[4.],
  14. [2.]])
  15. >>> np.column_stack((a[:, newaxis], b[:, newaxis]))
  16. array([[4., 3.],
  17. [2., 8.]])
  18. >>> np.hstack((a[:, newaxis], b[:, newaxis])) # the result is the same
  19. array([[4., 3.],
  20. [2., 8.]])

另一方面,row_stack函数等效vstack于任何输入数组。实际上,row_stackvstack的别名:

  1. >>> np.column_stack is np.hstack
  2. False
  3. >>> np.row_stack is np.vstack
  4. True

通常,对于具有多于两个维度的数组, hstack沿着它们的第二个轴vstack堆叠,沿着它们的第一个轴堆叠,而且concatenate 允许一个可选参数给出应该发生连接的轴的编号。

笔记

在复杂的情况下,r_并且c_是用于通过沿一个轴堆叠号码创建阵列有用的。它们允许使用范围文字:

  1. >>> np.r_[1:4, 0, 4]
  2. array([1, 2, 3, 0, 4])

当与数组作为参数使用的, r_并且 c_是类似于 vstack和 hstack在它们的默认行为,但允许一个可选参数给轴沿其来连接的数量。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号