当前位置: 代码迷 >> 综合 >> 详解Numpy.hstack + numpy.split / numpy.hsplit 进阶用法与差异探究
  详细解决方案

详解Numpy.hstack + numpy.split / numpy.hsplit 进阶用法与差异探究

热度:77   发布时间:2023-12-23 20:01:11.0

目录

np.hstack()

例子:

np.hsplit()

例子:

下面用split()重点讲下 indices_or_sections的用法

例子:


np.hstack()

首先,hstack在tensorflow的是数据操作中经常用到,用来对自定义数据进行堆叠的reshape操作

官方文档如上

翻译:“按水平顺序堆叠数组(按列排列)。这相当于沿着第二个轴(x轴)进行连接,除了一维数组是沿着第一个轴(y轴)进行连接。重新构建被hsplit分割的数组。”

来看下参数:

可以传入单个和多个序列

例子:

挺简单的,就是在每一水平方向上(每一行)把不同的元素连接在一起

对于python list类型使用hstack的效果只是起到转化为ndarray的作用

 

np.hsplit()

很明显就是在水平方向做分割,父类函数肯定是split

例子:

#较低维的数组>>> x = np.arange(16.0).reshape(4, 4)
>>> x
array([[ 0.,   1.,   2.,   3.],[ 4.,   5.,   6.,   7.],[ 8.,   9.,  10.,  11.],[12.,  13.,  14.,  15.]])
>>> np.hsplit(x, 2)
[array([[  0.,   1.],[  4.,   5.],[  8.,   9.],[12.,  13.]]),array([[  2.,   3.],[  6.,   7.],[10.,  11.],[14.,  15.]])]# 这种情况split会说
>>> np.hsplit(x, np.array([3, 6]))
[array([[ 0.,   1.,   2.],[ 4.,   5.,   6.],[ 8.,   9.,  10.],[12.,  13.,  14.]]),array([[ 3.],[ 7.],[11.],[15.]]),array([], shape=(4, 0), dtype=float64)]# 高维数组也一样(可以理解为降维到2维情况再处理,见下图)
# With a higher dimensional array the split is still along the second axis.
>>> x = np.arange(8.0).reshape(2, 2, 2)
>>> x
array([[[0.,  1.],[2.,  3.]],[[4.,  5.],[6.,  7.]]])
>>> np.hsplit(x, 2)
[array([[[0.,  1.]],[[4.,  5.]]]),array([[[2.,  3.]],[[6.,  7.]]])]

上面例子高维数组的情况:

下面用split()重点讲下 indices_or_sections的用法

1.如果只传入一个整数值,那么就是沿着第三个参数axis指定的方向去平均的切开数组(奇数列,奇数行的情况见下)

2.如果传入的是一个一维数组或者sorted integer(排序后的整数),,这两个是等价的,会按照分片的法则进行分片

例子:

>>> x = np.arange(9.0)
>>> np.split(x, 3)
[array([0.,  1.,  2.]), array([3.,  4.,  5.]), array([6.,  7.,  8.])]>>>
>>> x = np.arange(8.0)
>>> np.split(x, [3, 5, 6, 10])
[array([0.,  1.,  2.]),array([3.,  4.]),array([5.]),array([6.,  7.]),array([], dtype=float64)]

 

  相关解决方案