您当前的位置:首页 > 计算机 > 编程开发 > Python

numpy库快速入门与基础知识

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

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]   #第0列1到4行
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)         # 创建单位矩阵,3行3列
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 键
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门