Numpy的学习4-array的合并

本文介绍NumPy中数组的垂直合并、水平合并及转置操作,包括vstack、hstack和concatenate函数的使用,并展示了如何通过增加维度来实现一维数组的转置。
import numpy as np

A = np.array([1, 1, 1])
B = np.array([2, 2, 2])

print(np.vstack((A, B)))  # vertical(垂直的) stack(堆)
"""
[[1,1,1]
 [2,2,2]]
"""

C = np.vstack((A,B))
print(A.shape,C.shape)
# 从打印出的结果来看,A仅仅是一个拥有3项元素的数组(数列),而合并后得到的C是一个2行3列的矩阵。
# (3,) (2,3)
# vertical stack本身属于一种上下合并
# 转置操作


'''
horizontal stack 表示水平线合并 也就是左右合并
'''
D = np.hstack((A,B))       # horizontal stack

print(D)
# [1,1,1,2,2,2]

print(A.shape,D.shape)
# (3,) (6,)


'''
说完了array的合并,稍微提及一下转置的操作
当是一维的数组的时候 就无法实现转置 因为他不是一个矩阵
此时就要借助其他函数操作进行转置
'''

print(A[np.newaxis,:]) #可以看到加一个newaxis表示的是加一个维度
# [[1 1 1]]

print(A[np.newaxis,:].shape)
# (1,3)    表示一行三列的矩阵

print(A[:,np.newaxis])  #可以看到newaixs表示的就是加1
"""
[[1]
[1]
[1]]
"""

print(A[:,np.newaxis].shape)
# (3,1)


'''
结合上面所学的知识可以把它综合起来
'''
print('----分隔-----')
A = np.array([1, 1, 1])[:, np.newaxis]#变成一个三行1列的矩阵
B = np.array([2, 2, 2])[:, np.newaxis]

C = np.vstack((A, B))  # vertical stack  垂直合并    6行1列
D = np.hstack((A, B))  # horizontal stack   水平合并    3行2列

print(D)
"""
[[1 2]
[1 2]
[1 2]]
"""

print(A.shape, D.shape)
# (3,1) (3,2)

'''
当你的合并操作需要针对多个矩阵或序列时,借助concatenate函数可能会让你使用起来比前述的函数更加方便:
涉及到多个矩阵和序列的操作
'''

C = np.concatenate((A,B,B,A),axis=0)

print(C)
"""
array([[1],
       [1],
       [1],
       [2],
       [2],
       [2],
       [2],
       [2],
       [2],
       [1],
       [1],
       [1]])
"""

D = np.concatenate((A,B,B,A),axis=1)

print(D)
"""
array([[1, 2, 2, 1],
       [1, 2, 2, 1],
       [1, 2, 2, 1]])
"""

 np.vstack((a,b))将数组上下合并

np.hstack((a,b))将数组左右合并 

可以有选择性的对数组进行合并操作,输入的参数是一个元组

A[np.newaxis,:]表示增加一个新的维度,因为知道一位数组不是矩阵,无法进行转置

当有多个矩阵或者数列需要合并的时候选择concatenate,可选axis参数

转载于:https://www.cnblogs.com/simon-idea/p/9571274.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值