欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python数据分析-numpy模块基础知识(5)

程序员文章站 2023-03-08 09:58:10
呀~博主是正在学习数据分析的一员,记录的是自己学习过程中总结的知识点,肯定有不完善的地方,如有问题可以私聊我改正,共同学习进步。希望大家都能保持学习的热情,坚持自己,不断超越自己!博客地址:qxi的博客前面已经介绍了:numpy模块基础知识(1)numpy模块基础知识(2)numpy模块基础知识(3)numpy模块基础知识(4)#今天这篇文章主要介绍的是array的合并,分割以及复制#array的合并np.vstack((A,B))表示上下合并,即按列方向,也可以用: np.co....

呀~博主是正在学习数据分析的一员,记录的是自己学习过程中总结的知识点,肯定有不完善的地方,如有问题可以私聊我改正,共同学习进步。希望大家都能保持学习的热情,坚持自己,不断超越自己!
博客地址:qxi的博客

前面已经介绍了:
numpy模块基础知识(1)
numpy模块基础知识(2)
numpy模块基础知识(3)
numpy模块基础知识(4)
#今天这篇文章主要介绍的是array的合并,分割以及复制#

  1. 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,) #从这里就可以看出维度了
  1. 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]])]
  1. 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