IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python:numpy模块的最基础知识 -> 正文阅读

[Python知识库]Python:numpy模块的最基础知识

Python:numpy模块的最基础知识

年轻人的第一篇博文属于是 在这里插入图片描述

歇在家里无事干?不如学点小模块。不求内容全掌握,但求基础不放过。
高声大喊奥力给,所有知识都下胃。

下面给出numpy最最基础的操作,可以帮助快速入门。

什么是numpy

numpy模块可以构建多维数据容器,将数据整合在一起,完成多维数据的计算以及大型矩阵数组的存储与处理。

P1:创建数组

#array()函数创建任意维度数组
a=np.array([[1,2,3,4],[2,3,4,5],[3,4,5,6],[4,5,6,7]])
print(a)

#arange()函数创建等差数组
b=np.arange(1,20,4)
print(b)

#rand(x,y)函数用于创建随机数组,x为行数,y为列数,每个元素都是[0,1)内随机数
c=np.random.rand(2,3)
print(c)

#randn(x,y)函数创建的随机数组中的所有元素符合标准正态分布(均值为0,标准差为1)
d=np.random.randn(3,3)
print(d)

#randint(a,b,(x,y))函数创建的随机数组中的元素是指定范围[a,b)内的随机整数
e=np.random.randint(1,10,(3,3))
print(e)

#ones((x,y),dtype=int或float)创建一个元素全为1的数组,x为行数,y为列数,dtype用于设定元素属性
f=np.ones((2,3),dtype=int)
print(f)

#zeros((x,y),dtype=int或float)创建一个元素全为0的数组,x为行数,y为列数,dtype用于设定元素属性
g=np.zeros((2,3),dtype=int)
print(g)

运行上述示例代码,可以得到如下结果:

----------
[[1 2 3 4]
 [2 3 4 5]
 [3 4 5 6]
 [4 5 6 7]]
----------
[ 1  5  9 13 17]
----------
[[0.51550023 0.50000847 0.37887929]
 [0.66532777 0.82010152 0.91650431]]
----------
[[-0.75871322 -1.26306156  0.172365  ]
 [-1.44241245  1.11980853 -0.71393665]
 [-0.34334332 -0.46943443 -2.63622906]]
----------
[[8 4 4]
 [4 9 1]
 [9 7 9]]
----------
[[1 1 1]
 [1 1 1]]
----------
[[0 0 0]
 [0 0 0]]
----------

P2:查看或修改数组属性

#shape属性用于查看数组的行数和列数,若只想查看行数或列数,可从输出的元组中直接提取(切片)
arr1=np.array([[1,2],[3,4],[5,6]])
print(arr1.shape)
print(arr1.shape[0])
print(arr1.shape[1])

#size属性用于查看数组的大小,即元素个数
arr2=np.array([[1,2,3],[3,4,5],[5,6,7]])
print(arr2.size)

#ndim属性用于查看数组的维度
arr3=np.array([[1,2,3],[3,4,5],[5,6,7]])
print(arr3.ndim)

#dtype属性用于查看数组的元素的数据类型
arr4=np.array([[1,2.3,3],[3.8,4,5],[5,6,7.1]])
print(arr4.dtype)

#astype()函数用于切换数组的元素的数据类型
arr5=np.array([[1,2.3,3],[3.8,4,5],[5,6,7.1]])
arr5_change=arr5.astype(int)
print(arr5_change)
print(arr5_change.dtype)

运行上述示例代码,可以得到如下结果:

----------
(3, 2)
3
2
----------
9
----------
2
----------
float64
----------
[[1 2 3]
 [3 4 5]
 [5 6 7]]
int32
----------

P3:选取数组元素

#一维数组
#选取单个元素,连续元素,不连续元素都可以利用切片索引完成
A=np.array([12,32,40,64,56,86,57,18,92,19,28,15])
print(A[0])
print(A[-2])
print(A[3:-2])
print(A[:3])
print(A[1:5:2])

#二维数组
#选取单个元素arr[x,y]表示选取第x+1行第y+1列的元素
B=np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
print(B)
print(B[1,2]) #打印第2行第3列的元素

#选取单行或单列元素时将不选取的位置用冒号代替
print(B[1,:]) #打印第2行
print(B[:,2]) #打印第3列

#选取某些行或列的元素
print(B[1:3,:]) #打印第2行至第3行的元素
print(B[:,1:3]) #打印第2列至第3列的元素
print(B[1:3,0:2]) #打印第2行至第3行中,第1列至第2列的元素

运行上述示例代码,可以得到如下结果:

----------
12
28
[64 56 86 57 18 92 19]
[12 32 40]
[32 64]
----------
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]
6
[4 5 6]
[ 3  6  9 12]
[[4 5 6]
 [7 8 9]]
[[ 2  3]
 [ 5  6]
 [ 8  9]
 [11 12]]
[[4 5]
 [7 8]]
----------

P4:数组重塑与转置

#一维数组的重塑(将1行或1列的数组重塑为多行多列)
Arr1=np.array([1,2,3,4,5,6,7,8])
print(Arr1.reshape(2,4))
print(Arr1.reshape(4,2))

#多维数组的重塑(将多行多列的数组重塑为多行多列)
Arr2=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(Arr2.reshape(4,3))
print(Arr2.reshape(2,6))

#flatten()函数则可以把多行多列数组重塑为单行
Arr3=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(Arr3.flatten())

#T属性和transpose()函数都可以完成转置操作
Arr4=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(Arr4.T)
print(np.transpose(Arr4))

运行上述示例代码,可以得到如下结果:

----------
[[1 2 3 4]
 [5 6 7 8]]
[[1 2]
 [3 4]
 [5 6]
 [7 8]]
----------
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]
[[ 1  2  3  4  5  6]
 [ 7  8  9 10 11 12]]
----------
[ 1  2  3  4  5  6  7  8  9 10 11 12]
----------
[[ 1  5  9]
 [ 2  6 10]
 [ 3  7 11]
 [ 4  8 12]]
[[ 1  5  9]
 [ 2  6 10]
 [ 3  7 11]
 [ 4  8 12]]
----------

P5:添加数组元素

#append(arr,values,axis=0或1)函数可以在arr数组的最后添加values,其中axis=0表示添加在行方向,axis=1表示添加在列方向(不设置则默认变为一维数组)
ARR1=np.array([[1,2,3],[4,5,6]])
print(np.append(ARR1,[[7,8,9]],axis=0))
print(np.append(ARR1,[[7,8],[9,10]],axis=1))

#insert(arr,obj,values,axis=0或1)函数用于在数组arr指定位置obj插入元素values,其中axis=0表示添加在行方向,axis=1表示添加在列方向
ARR2=np.array([[1,2],[3,4],[5,6]])
print(np.insert(ARR2,1,[7,8],axis=0))
print(np.insert(ARR2,1,[7,8,9],axis=1))

运行上述示例代码,可以得到如下结果:

----------
[[1 2 3]
 [4 5 6]
 [7 8 9]]
[[ 1  2  3  7  8]
 [ 4  5  6  9 10]]
----------
[[1 2]
 [7 8]
 [3 4]
 [5 6]]
[[1 7 2]
 [3 8 4]
 [5 9 6]]
----------

P6:删除数组元素

#delete(arr,obj,axis=0或1)函数用于在数组arr指定位置obj删除元素,其中axis=0表示在行方向删除,axis=1表示在列方向删除,不设置则先变为一维数组再进行删除
ARR3=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(np.delete(ARR3,2))
print(np.delete(ARR3,2,axis=0))
print(np.delete(ARR3,2,axis=1))

运行上述示例代码,可以得到如下结果:

----------
[1 2 4 5 6 7 8 9]
[[1 2 3]
 [4 5 6]]
[[1 2]
 [4 5]
 [7 8]]
----------

P7:处理数组的缺失值

#isnan()函数不光可以标记数组中缺失值的位置,还可以进行填充
ARR4=np.array([[1,2,3,4,5,6,np.nan,8,9]])
print(np.isnan(ARR4))
ARR4[np.isnan(ARR4)]=0
print(ARR4)

运行上述示例代码,可以得到如下结果:

----------
[[False False False False False False  True False False]]
[[1. 2. 3. 4. 5. 6. 0. 8. 9.]]
----------

P8:处理数组的重复值

#unique()函数可以去除数组中的重复值,还会将去重后的元素按照由小到大排列(但是会变为一维数组),添加参数return_counts=True可以查看去重后数组元素在原数组中出现的次数
ARR5=np.array([[8,4,2,3,5,2,5,5,6,8,8,9],[8,3,2,5,6,4,2,5,9,7,4,1]])
ARR5_1,ARR5_2=np.unique(ARR5,return_counts=True)
print(ARR5_1)
print(ARR5_2)

运行上述示例代码,可以得到如下结果:

----------
[1 2 3 4 5 6 7 8 9]
[1 4 2 3 5 2 1 4 2]
----------

P9:拼接数组

#concatenate((),axis=0或1)函数能一次合并多个数组,将要合并的数组作为一个元组,其中axis=0代表在列方向合并,axis=1代表在行方向合并
A1=np.array([[1,2,3],[4,5,6]])
A2=np.array([[7,8,9],[10,11,12]])
print(np.concatenate((A1,A2),axis=0))
print(np.concatenate((A1,A2),axis=1))

#hstack()函数相当于水平拼接数组,vstack()相当于垂直拼接数组
A3=np.array([[1,2,3],[4,5,6]])
A4=np.array([[7,8,9],[10,11,12]])
print(np.hstack((A3,A4)))
print(np.vstack((A3,A4)))

运行上述示例代码,可以得到如下结果:

----------
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]
[[ 1  2  3  7  8  9]
 [ 4  5  6 10 11 12]]
----------
[[ 1  2  3  7  8  9]
 [ 4  5  6 10 11 12]]
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]
----------

P10:拆分数组

#split()函数可以将数组拆分成指定份数,也可以按照索引位置切片
A5=np.array([1,2,3,4,5,6,7,8,9,10,11,12])
print(np.split(A5,4))
print(np.split(A5,[2,3,8,10]))

#hsplit()函数可以对数组横向拆分,vsplit()可以对数组竖向拆分
A6=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])
print(np.hsplit(A6,2))
print(np.vsplit(A6,2))

运行上述示例代码,可以得到如下结果:

----------
[array([1, 2, 3]), array([4, 5, 6]), array([7, 8, 9]), array([10, 11, 12])]
[array([1, 2]), array([3]), array([4, 5, 6, 7, 8]), array([ 9, 10]), array([11, 12])]
----------
[array([[ 1,  2],
       [ 5,  6],
       [ 9, 10],
       [13, 14]]), array([[ 3,  4],
       [ 7,  8],
       [11, 12],
       [15, 16]])]
[array([[1, 2, 3, 4],
       [5, 6, 7, 8]]), array([[ 9, 10, 11, 12],
       [13, 14, 15, 16]])]
----------

P11:数组的运算

#数组之间可以进行四则运算,数组和数字之间也可以进行四则运算,也可以进行逻辑运算
A7=np.array([[1,2,3,4],[5,6,7,8]])
A8=np.array([[9,10,11,12],[13,14,15,16]])
print(A7+A8)
print(A7*A8)
print(A8-A7)
print(A7*2)
print(A7+5)
print(A7<3)

#sum(axis=0或1)函数用于求和,axis=0表示对每一列分别求和,axis=1表示对每一行分别求和,不设置则全体求和
A9=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(A9.sum())
print(A9.sum(axis=0))
print(A9.sum(axis=1))

#mean(axis=0或1)函数用于求均值,axis=0表示对每一列分别求均值,axis=1表示对每一行分别求均值,不设置则全体求均值
A10=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(A10.mean())
print(A10.mean(axis=0))
print(A10.mean(axis=1))

#max(axis=0或1)函数用于求最大值,axis=0表示对每一列分别求最大值,axis=1表示对每一行分别求最大值,不设置则全体求最大值(min()函数同理)
A11=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(A11.max())
print(A11.max(axis=0))
print(A11.max(axis=1))

#cumsum(axis=0或1)函数用于计算方向轴上元素的累加值,返回一个对应的数组,axis=0对列进行,axis=1对行进行
A12=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(A12.cumsum(axis=0))
print(A12.cumsum(axis=1))

运行上述示例代码,可以得到如下结果:

----------
[[10 12 14 16]
 [18 20 22 24]]
[[  9  20  33  48]
 [ 65  84 105 128]]
[[8 8 8 8]
 [8 8 8 8]]
[[ 2  4  6  8]
 [10 12 14 16]]
[[ 6  7  8  9]
 [10 11 12 13]]
[[ True  True False False]
 [False False False False]]
----------
78
[15 18 21 24]
[10 26 42]
----------
6.5
[5. 6. 7. 8.]
[ 2.5  6.5 10.5]
----------
12
[ 9 10 11 12]
[ 4  8 12]
----------
[[ 1  2  3  4]
 [ 6  8 10 12]
 [15 18 21 24]]
[[ 1  3  6 10]
 [ 5 11 18 26]
 [ 9 19 30 42]]
----------

P12:矩阵的属性

#numpy.linalg.matrix_rank()用于返回矩阵的秩
A13=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(np.linalg.matrix_rank(A13))

#numpy.linalg.det()用于返回矩阵的对应的行列式的值
A14=np.array([[1,3,2],[1,1,1],[1,3,5]])
print(np.linalg.det(A14))

#diagonal()用于返回矩阵对角线元素
A15=np.array([[1,3,2],[1,3,1],[1,3,5]])
print(A15.diagonal())

#trace()用于返回矩阵的迹
A16=np.array([[0,3,2],[1,0,1],[1,3,5]])
print(A16.trace())

#numpy.linalg.inv()用于求矩阵的逆
A17=np.array([[0,4,2],[1,0,1],[1,8,2]])
print(np.linalg.inv(A17))

运行上述示例代码,可以得到如下结果:

----------
2
----------
-6.0
----------
[1 3 5]
----------
5
----------
[[-0.66666667  0.66666667  0.33333333]
 [-0.08333333 -0.16666667  0.16666667]
 [ 0.66666667  0.33333333 -0.33333333]]
----------

蒟蒻第一次写文章,希望有帮助。
这个只能帮助初步认识numpy,想要深入学习的话可以请教其他大佬。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-03 11:08:04  更:2021-08-03 11:08:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 23:52:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码