python数据分析-numpy模块基础知识(5)
呀~博主是正在学习数据分析的一员,记录的是自己学习过程中总结的知识点,肯定有不完善的地方,如有问题可以私聊我改正,共同学习进步。希望大家都能保持学习的热情,坚持自己,不断超越自己!
博客地址:qxi的博客
前面已经介绍了:
numpy模块基础知识(1)
numpy模块基础知识(2)
numpy模块基础知识(3)
numpy模块基础知识(4)
#今天这篇文章主要介绍的是array的合并,分割以及复制#
- array的合并
np.vstack((A,B))表示上下合并,即按列方向,也可以用: np.concatenate((A,B),axist=0)
np.hstack((A,B)) 表示左右合并,即按行方向,也可以用: np.concatenate((A,B),axist=1)
例子中A,B是一维数组
(这里称为序列),不是矩阵(注意:np.array([[1],[1],[1]])
这种形式才是矩阵,标志是有两个中括号)
A与B左右合并也是序列,上下合并就变成2行3列的矩阵了,具体看例子:
import numpy as np
A=np.array([1,1,1]) #A序列,元素有3个
B=np.array([2,2,2]) #B序列
C=np.vstack((A,B)) #上下合并,即按列方向
D=np.hstack((A,B)) #k左右合并,即按行方向
print(C) #C矩阵
print(D) #D序列
print(A.shape,C.shape,D.shape)
运行结果:
[[1 1 1]
[2 2 2]] #上下合并变矩阵,2行3列
[1 1 1 2 2 2] #左右合并还是序列,即一维数组,元素有6个
(3,) (2, 3) (6,) #从这里就可以看出维度了
- array的分割
①等量分割
同样也是有两种方式:
np.vspilt(array,n)表示纵向分割成n块,即上下方向
,或者用:np.split(array,n,axis=0),axis=0表示按列(前面文章讲过);
np.hspilt(array,n)表示横向分割成n块,即左右方向
,或者用:np.split(array,n,axis=1),axis=1表示按行
import numpy as np
A=np.arange(12).reshape((3,4))
print(A)
print(np.vsplit(A,3)) #纵向分割,上下方向
print(np.split(A,3,axis=0)) #按列方向,即纵向分割
print(np.hsplit(A,2)) #横向分割,左右方向
print(np.split(A,2,axis=1)) #按行方向,即横向分割
运行结果:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,
9, 10, 11]])] #np.vsplit(A,3)结果
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,
9, 10, 11]])] #np.split(A,3,axis=0)结果跟上面一样
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]]) #np.hsplit(A,2)结果
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])] #np.split(A,2,axis=1)结果跟上面一样
②不等量分割
利用的函数是np.array_split()
函数
import numpy as np
A=np.arange(12).reshape((3,4))
print(A)
print(np.array_split(A,3,axis=1)) #不等量分割
运行结果:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2],
[ 6],
[10]]), array([[ 3],
[ 7],
[11]])]
- array的复制
完全一样的复制,直接用赋值符合“=”
;这里b就是a本身了,只要a一改变,b就会跟着改变
import numpy as np
a=np.arange(4)
print(a)
b=a
print(b is a) #b就是a本身,完全一样
a[3]=4 #改变a
print(b) #a改变,b也会跟着变的
运行结果:
[0 1 2 3] #a
True #是一样的
[0 1 2 4] #b也跟着改变了
如果只是复制内容而已,相当于新建
一个,而不是关联起来,用copy()
函数,这个时候a改变了但是b不会跟着变了
import numpy as np
a=np.arange(4)
print(a)
b=a.copy() #复制a的内容新建一个b
print(b)
a[3]=4 #改变a
print(a) #改变后的a
print(b) #b不会跟着变了
运行结果:
[0 1 2 3] #原来的a
[0 1 2 3] #复制之后的b
[0 1 2 4] #改变后的a
[0 1 2 3] #a改变,b不会跟着变
好啦~numpy基础知识就告一段落了,后期的学习中如果发现新的知识点我会回来补充的,也欢迎大家一起讨论学习!
点赞点赞~
本文地址:https://blog.csdn.net/hswqxi/article/details/107357363