【Python】numpy方法合辑-数组组合、拆分

一,数组组合

(一)concatenate

numpy.concatenate((a1, a2, ...), axis=0, out=None)

#参数
"""
(a1, a2, ...):数组序列(元组,列表等),除了与axis对应的维度之外,数组其他维度数值相等。
axis=0:轴向,默认 0

"""

# demo
arr1 = np.arange(9).reshape(3, -1)
arr2 = np.arange(3).reshape(1, 3)
arr3 = np.concatenate([arr1, arr2], axis=0)
print(arr3)

(二)stack

numpy.stack(arrays, axis=0, out=None)
# 沿着一个新的轴拼接数组序列
# 参数
"""
arrays:数组序列(元组,列表等),所有数组形状相同
axis:新增轴向,默认0,若axis=-1,将新增数组的下一个轴向
"""
# demo
arr1 = np.arange(6).reshape(3, -1)
arr2 = np.arange(6).reshape(3, 2)
arr3 = np.stack([arr1, arr2], axis=0)
print(arr3.shape)  # (2, 3, 2) 增加0轴向,因为2个数组,所以0轴数值为2
arr4 = np.stack([arr1, arr2], axis=1)
print(arr4.shape)  # (3, 2, 2) 增加1轴向,因为2个数组,所以1轴数值为2
arr5 = np.stack([arr1, arr2], axis=-1)
print(arr5.shape)  # (3, 2, 2) 数组的下一轴向为2,因为2个数组,所以2轴数值为2

(三)vstack

numpy.vstack(tup)
# 按顺序垂直堆叠数组,即沿0轴堆叠
# 参数
"""
tup:数组序列(元组,列表等),除了0轴对应的维度之外,数组其他维度数值相等。
一维数组必须有相同长度
"""
# demo
arr1 = np.arange(6).reshape(3, -1)
arr2 = np.arange(6).reshape(3, 2)
arr3 = np.vstack((arr1, arr2]))
print(arr3.shape) 

(四)hstack

numpy.hstack(tup)
# 按顺序水平堆叠数组,即沿1轴堆叠
# 参数
# tup:数组序列(元组,列表等),除了1轴对应的维度之外,数组其他维度数值相等。
# demo
arr1 = np.arange(6).reshape(3, -1)
arr2 = np.arange(6).reshape(3, 2)
arr3 = np.vstack((arr1, arr2))
print(arr3.shape)  # (3, 4) 

(五)dstack

numpy.hstack(tup)
# 按顺序深度堆叠数组,即沿2轴堆叠
# 参数
# tup:数组序列(元组,列表等),除了2轴对应的维度之外,数组其他维度数值相等。

# demo
arr1 = np.arange(6).reshape(3, -1)
arr2 = np.arange(6).reshape(3, 2)
arr3 = np.dstack((arr1, arr2))
print(arr3.shape)  # (3, 2, 2) 

二,数组拆分

(一)split

numpy.split(ary, indices_or_sections, axis=0)
# 将一个数组拆分为多个子数组作为视图,得到的子数组都是视图,非副本

#参数
"""
ary:拆分的数组
indices_or_sections:定义数组如何拆分
如果indices_or_sections为整数n,则数组将沿轴被分成n个相等的数组。如果无法进行这种拆分,则会报错。
如果indices_or_sections是索引序列,则数组沿轴按照索引拆分,例如
indices_or_sections=[1,3],axis=0,则数组拆分成
arr[:1]
arr[1:3]
arr[3:]
axis:拆分轴向
"""

#demo
arr = np.random.randn(6, 3)
first, second = np.split(arr, 2, axis=0)

arr = np.random.randn(6, 3)
first, second = np.split(arr, 2, axis=1)
# 沿着1轴无法均分,ValueError: array split does not result in an equal division

# 按照索引拆分
arr = np.random.randn(6, 3)
first, second, third = np.split(arr, [2, 5], axis=0)

# 按照索引拆分,如果索引超过了数组沿轴的索引范围,则相应地返回空子数组。
arr = np.random.randn(6, 3)
first, second, third = np.split(arr, [2, 6], axis=0)

(二)vsplit

numpy.vsplit(ary, indices_or_sections)
#垂直沿着0轴拆分数组
#同numpy.split(ary, indices_or_sections, axis=0)

(三)hsplit

numpy.hsplit(ary, indices_or_sections)
# 水平沿着1轴拆分数组
# 同numpy.split(ary, indices_or_sections, axis=1)

(四)dsplit

numpy.dsplit(ary, indices_or_sections)
#沿着2轴拆分数组
#同numpy.split(ary, indices_or_sections, axis=2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值