查看: 2598|回复: 0

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

[复制链接]

665

主题

1234

帖子

6670

积分

xdtech

Rank: 5Rank: 5

积分
6670
发表于 2019-9-6 20:23:57 | 显示全部楼层 |阅读模式
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.]]
拆分后:
[array([[ 8.,  5.],
        [ 0.,  2.]]), array([[ 0.,  2.],
        [ 9.,  5.]]), array([[ 3.,  8.],
        [ 8.,  2.]])]


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


vsplit函数 (row方向)

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

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


2、

print(np.vsplit(varr, (2, 3)))
拆分结果:
[array([[0, 1, 2, 3],
       [4, 5, 6, 7]]), array([[ 8,  9, 10, 11]]), array([[12, 13, 14, 15]])]


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([ 0.,  1.,  2.]), array([ 3.,  4.,  5.]), array([ 6.,  7.])]



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表