shaoheshaohe 发表于 2019-9-6 20:23:57

numpy——hsplit函数、vsplit函数、array_split函数

hsplit函数(col方向)

使用hsplit,通过指定要返回的相同shape的array的数量,或者通过指定分割应该发生之后的列来沿着其横轴拆分原array:

指定相同shape的array的数量来拆分原array:
import numpy as np
harr = np.floor(10 * np.random.random((2, 6)))
print(harr)
print(np.hsplit(harr, 3))
原array:
[[ 8.5.0.2.3.8.]
[ 0.2.9.5.8.2.]]
拆分后:
,
      [ 0.,2.]]), array([[ 0.,2.],
      [ 9.,5.]]), array([[ 3.,8.],
      [ 8.,2.]])]


指定分割应该发生之后的列来拆分原array
print(np.hsplit(harr, (2, 4, 5)))
拆分结果:
,
      [ 0.,2.]]), array([[ 0.,2.],
      [ 9.,5.]]), array([[ 3.],
      [ 8.]]), array([[ 8.],
      [ 2.]])]


vsplit函数 (row方向)

vsplit沿着垂直轴分割,其分割方式与hsplit用法相同。
1、

varr = np.arange(16).reshape()
print(varr)
print(np.vsplit(varr, 2))
原array为:
array([[ 0,1,2,3],
       [ 4,5,6,7],
       [ 8,9, 10, 11],
       ])
差分后:
,
       ]), array([[ 8,9, 10, 11],
       ])]


2、

print(np.vsplit(varr, (2, 3)))
拆分结果:
,
       ]), array([[ 8,9, 10, 11]]), array([])]


array_split函数

hsplit和vsplit与array_split之间的唯一区别是array_split允许indices_or_sections是一个不等于轴的整数。 对于应该分成n个部分的长度为l的数组,它将返回l%n个大小为l // n + 1的子数组,其余大小为l // n。

x = np.arange(8.0)
np.array_split(x, 3)
原array为:
array([ 0.,1.,2.,3.,4.,5.,6.,7.])
拆分后:
), array([ 3.,4.,5.]), array([ 6.,7.])]



页: [1]
查看完整版本: numpy——hsplit函数、vsplit函数、array_split函数