2025年4月15日 星期二 乙巳(蛇)年 正月十六 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

numpy库快速入门与基础知识

时间:05-18来源:作者:点击数:57

numpy库

  • 数据分析人工智能最基础一个库:numpy(numeric(数字化) python)
  • 中文官网:https://www.numpy.org.cn/ 查看API,如何使用
  • 使用某个库,导包,import numpy as np
  • 报错:ModuleNotFoundError: No module named 'numpy',集成环境下,没有numpy这个模块
  • 解决:安装 pip install numpy
生成NumPy数组
  • import numpy as np
  • a = np.array([1,2,3,4,5,6,7,8,9,10])
  • print(a)

常用函数的使用

  • 平均值:mean
  • 最大值:max
  • 最小值:min
  • 标准差:std
  • 方差:var
  • 求多少次幂:power
  • 加法:add
  • 减法:subtract
  • 乘法:multiply
  • 除法:divide
  • np.exp 自然底数e为底,指数运算
  • np.log 对数运算

ndarray对象常用属性

  • ndarray.shape 返回包含数组维度的元组,也能调整数组的大小 a.shape = (3, 2)
  • ndarray.reshape 调整数组维度大小 a.reshape(3, 2)
  • ndarray.ndim 返回数组的维度
  • ndarray.itemsize 返回数组中每个元素的字节单位长度

NumPy数组切片

多维数组的切片以逗号为分隔对各维度切片,在二维数组中就只有一个逗号,逗号前为行切片逗号后为列切片

  • a[:, 1] #所有行第一列;
  • a[0, 1:4] #第0行所有列
  • a[1:4, 0] #第014
  • a[::2,::2] #索引值能被2整除的所有行能被2整除的所有列
  • np[0:2] 左闭右开
  • 加载图片使用一个库 matplotlibpip install matplotlib
  • jupyter 魔法指令,预加载,显示图片 :** %matplotlib inline**
  • np.shape 查看数组形状

NumPy数组字符串操作

  • #数组的转置
  • a = np.arange(8).reshape(2,4)
  • a.T
  • #数组去重
  • numpy.unique(arr, return_index, return_inverse, return_counts)
  • a = np.array([5,2,6,2,7,5,6,8,2,9])
  • u = np.unique(a)
  • u,indices = np.unique(a, return_index = True)
  • numpy.stack(arrays, axis) #沿新轴连接数组
  • a = np.array([[1,2],[3,4]])
  • b = np.array([[5,6],[7,8]])
  • np.stack((a,b),0)
  • np.stack((a,b),1)
  • c = np.hstack((a,b)) #通过堆叠生成水平的单个数组
  • c = np.vstack((a,b)) #竖直堆叠
  • numpy.insert() #数组插入
  • numpy.delete() #元素删除
  • numpy.resize(arr, shape)
  • numpy.append(arr, values, axis) #数组拼接
  • a = np.array([[1,2,3],[4,5,6]])
  • np.append(a, [7,8,9])
  • np.append(a, [[7,8,9]],axis = 0)
  • np.append(a, [[5,5,5],[7,8,9]],axis = 1

numpy相关线性代数的操作

数学算术函数
  • #三角函数
  • a = np.array([0, 30, 45, 60, 90])
  • np.sin(a*np.pi/180)
  • np.cos(a*np.pi/180)
  • np.tan(a*np.pi/180)
  • arcsin、arccos、arctan、numpy.degrees()
  • #decimals 要舍入的小数位数。 默认值为0。 如果为负,整数将四舍五入到小数点左侧的位置
  • numpy.around(a, decimals)
  • numpy.floor() #向下取整
  • numpy.ceil() #向上取整
  • #add()、 subtract()、 multiply()、 divide() #ndarray数据之间加减乘除运算
  • #numpy.power()
  • a = np.array([10,100,1000])
  • np.power(a,2)
  • b = np.array([1,2,3])
  • np.power(a,b)
  • #numpy.mod() 除法余数
  • a = np.array([10,20,30])
  • b = np.array([3,5,7])
  • np.mod(a,b)
  • np.remainder(a,b) #和mod函数功能相同
  • #统计函数
  • numpy.amin()
  • numpy.amax()
矩阵操作
  • #numpy.dot() 函数返回两个数组的点积,对于二维数组其等效于矩阵乘法
  • #numpy.vdot() 函数返回两个向量的点积
  • a = np.array([[1,2],[3,4]])
  • b = np.array([[11,12],[13,14]])
  • print np.vdot(a,b) #1*11 + 2*12 + 3*13 + 4*14 = 130
  • #numpy.inner() 函数返回一维数组的向量内积
  • #numpy.matmul() 函数返回两个数组的矩阵乘积
  • #numpy.linalg.det() #计算矩阵的行列式
  • #numpy.linalg.solve() #给出了矩阵形式的线性方程的解
  • #numpy.linalg.inv() #计算矩阵的逆矩阵
  • #numpy.dot() 函数返回两个数组的点积,对于二维数组其等效于矩阵乘法
  • #numpy.vdot() 函数返回两个向量的点积
  • a = np.array([[1,2],[3,4]])
  • b = np.array([[11,12],[13,14]])
  • print np.vdot(a,b) #1*11 + 2*12 + 3*13 + 4*14 = 130
  • #numpy.inner() 函数返回一维数组的向量内积
  • #numpy.matmul() 函数返回两个数组的矩阵乘积
  • #numpy.linalg.det() #计算矩阵的行列式
  • #numpy.linalg.solve() #给出了矩阵形式的线性方程的解
  • #numpy.linalg.inv() #计算矩阵的逆矩阵
IO文件操作
  • #ndarray对象可以保存到磁盘文件并从磁盘文件中加载
  • #load() 和 save() 函数处理numpy二进制文件
  • #loadtxt() 和 savetxt() 函数处理正常的文本文件
  • a = np.array([1,2,3,4,5])
  • np.save('outfile',a)
  • b = np.load('outfile.npy')
  • a = np.array([1,2,3,4,5])
  • np.savetxt('out.txt',a)
  • b = np.loadtxt('out.txt')

NumPy数组属性

  • a = np.array([[11, 12, 13, 14, 15],
  • [16, 17, 18, 19, 20],
  • [21, 22, 23, 24, 25],
  • [26, 27, 28 ,29, 30],
  • [31, 32, 33, 34, 35]])
  • print(type(a)) # <class 'numpy.ndarray'>NumPy数组实际上被称为ndarray
  • print(a.dtype) # int32
  • print(a.size) # 25
  • print(a.shape) # (5, 5) 数组的形状是它有多少行和列
  • print(a.itemsize) # 4
  • print(a.ndim) # 2
  • print(a.nbytes) # 100
在这里插入图片描述

itemsize属性是每个元素占用的字节数。这个数组的数据类型是int32,一个int32中有32位,一个字节中有8位,除以32除以8,你就可以得到它占用了多少字节,在本例中是4(因电脑而异)。ndim 属性是数组的维数,这里是二维数组。nbytes 属性是数组中的所有数据消耗掉的字节数,一共25个元素,每个元素占4个字节,一共占4*25=100个字节。

常用快捷NumPy数组函数

1.全零数组

可以指定数组的行列元素个数,具体程序如下:

  • import numpy as np
  • a = np.zeros((5,5)) # 创建全0数组
  • print(a)

得到了一个5×5的全零数组,输出结果如下:

在这里插入图片描述
2.全一数组

有时候,我们需要一个全一数组,具体程序如下:

  • b = np.ones((5,2)) # 创建全1数组
  • print(b)

得到了一个5×2的全一数组,输出结果如下:

在这里插入图片描述
3.全指定数字数组

更一般的,我们也可以得到全部都是指定数字的数组,例如全部是数字7,具体命令如下:

  • c = np.full((2,2), 7) # 创建全7数组
  • print(c)

得到了一个2×2的全部是数字7数组,输出结果如下:

在这里插入图片描述
4.单位矩阵数组

如果想得到单位矩阵,可用如下程序:

  • d = np.eye(3) # 创建单位矩阵,33
  • print(d)

得到单位矩阵如下:

在这里插入图片描述
5.随机数数组

类似于stata中的随机数函数,NumPy也有创建随机数的函数,程序如下:

  • e = np.random.random((2,2)) # 创建随机数数组
  • print(e)

得到2×2的随机得到单位矩阵如下:

在这里插入图片描述

合成音频

  • 读取wav格式的音乐文件,wave库就可以
    wav 高清无损的音乐格式,微软公司开始的音频格式
  • wav采样频率44100HZ,音乐在进行录制,一秒钟录制音频的数量
  • 使用jupyter创建的代码文件,后缀是:.ipynb
  • ipython(i + python,phone,iphone) notebook ----->ipynb
  • jupyter 开源项目,来源 ipython
  • reshape,形状调整,大前提:数据不能变
  • 将两段音频合二为一,级联
  • concatenate([nd1,nd2]),将两个ndarray片段合二为一
  • 在代码中将两段不同音乐合并,保存
  • numpy 配合wave使用,操作了音频文件.wav格式的音频文件

总结:

  • 计算机上的数据,无论是图片也好,音频也好,数组对象
  • 图片:彩色图片是三维的数组[[[具体数据]]]
  • 音频:二维数组[[具体数据]]
  • 操作数据,处理数据,图片和音频可以发生改变

numpy 操作mp3文件

  • mp3压缩格式,更流行pydubpip install pydub
  • pydub不仅仅可以读取mp3类型文件,wav等其他格式的音频文件都可以加载
  • pydub依赖于ffmpeg,演示了如何配置,配置成功之后,重启命令行jupyter才可以使用
ffmpeg
  • pydub加载音频返回对象是: pydub.audio_segment.AudioSegment
  • 可以直接操作该对象,进行切片和分贝空值

numpy操作视频mp4

  • mp4 视频是一张张图片组合而成,一秒24帧,此时,肉眼无法分辨,此时就是所说视频
  • scikit-videopip install scikit-video
  • 无论是什么类型的数据,电脑而言,ndarray
  • 视频由一张张图片组合成而成+音频------->电影
  • 视频操作,ffmpeg合成视频,添加声音
  • 视频结构四维数组[[[[]]]] 多张图片组合而成

计算机视觉 opencv computer vision

  • 处理图片,处理视频非常重要一个库pip install opencv-python
  • import cv2 使用相应方法
  • cv2在读取图片的时候,路径中不能包含中文,不然无法读取
  • cv2在读取图片时,颜色通道蓝绿红

jupyte常用快捷键

  • B 在一个代码单元下面插入一行,A 上面插入一行
  • 运行代码单元:Ctrl + Enter、Alt + Enter、Shift + Enter
  • 删除代码单元格:双击d
  • 代码自动补全: tab 键
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门