Numpy

Numpy

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。

SciPy 是一个开源的 Python 算法库和数学工具包。SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。

Matplotlib 是 Python 编程语言及其数值数学扩展包 NumPy 的可视化操作界面。它为利用通用的图形用户界面工具包,如 Tkinter, wxPython, Qt 或 GTK+ 向应用程序嵌入式绘图提供了应用程序接口(API)。

NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。ndarray 对象是用于存放同类型元素的多维数组。ndarray 中的每个元素在内存中都有相同存储大小的区域。

常用函数

# numpy内的元素必须都是相同的类型,若输入不一致,将会自动强制转换
import numpy as np
vector = np.array([1,2,3,4])
# 矩阵类型
print(vector.dtype)
# 矩阵维度
vector.shape
matrix = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
# 取第2行第3列元素
matrix[1,2]
# 取下标0~2的元素
vector[0:3]
# 取第二列元素(冒号代表取所有行)
matrix[:,1]
# 取0,1行,1,2列。
matrix[0:2,1:3]
# 判断是否有元素等于3,返回一个bool
vector == 3
# 类型转换
print(vector.astype(str))
# 打印帮助文档
print(help(matrix))
# 取最小元素
matrix.min()
# axis=0,对每列操作,axis=1,对每行操作,sum之后返回一个向量
matrix.sum(axis=1)
# 生成0-9的向量
matrix = np.arange(10)
# 重新生产2行5列矩阵,行优先,参数可为-1(即只指定一个维度的大小)
matrix.reshape(2,5)
# 矩阵维度
matrix.ndim
# 元素个数
matrix.size
# 生成0元素矩阵,元素默认float
matrix = np.zeros((3,4))
# 生成1元素矩阵
matrix = np.ones((3,4,5),dtype = np.int32)
# 构造10到20的向量(20不包含),元素间距为5
matrix = np.arange(10,20,5)
# 随机数函数,随机取-1到1之间的数
matrix = np.random.random(2,3)
# 从0到2pi均间隔取100个数
matrix = np.linspace(0,2*pi,100)
# 矩阵变向量
matrix.ravel()
# 矩阵转置
matrix.T
# 矩阵拼接,h按行拼,v按列拼。按行拼要保证二者行数一致,按列也一样
np.hstack(A,B)
np.vstack(A,B)
# 矩阵切割,h按行切,即行数不变,v按列切
np.hsplit(matrix,3)# 切三份
np.hsplit(matrix,(3,4))# 第三列,第四列后面各切一刀
# 矩阵扩展,a的行扩展3倍,列扩展2倍
b = np.tile(a,(4,3))
# 矩阵排序,sort默认由小到大
matrix.sort(axis=1)

复制操作

a = np.array([1,2,3,4])
# a,b实质是一个变量,指向内存同一区域
b = a
# a,c不是一个变量,改变a的shape后c的shape不会改变,但改变a的某个元素值,c也会跟着变
c = a.view()
# a,d不是一个变量,改变a不会改变c的任何东西
d = a.copy()

索引

matrix = np.sin(np.arange(20).reshape(5,4))
# 返回每列的最大值的下标,一个向量
ind = matrix.argmax(axis=0)
# 利用最大值下标打印出每列的最大值
matrix_max = matrix[ind,range(matrix.shape[1])]	
# 返回排序索引,最小元素下标放最前面,最大值元素下标放最后面
b = np.argsort(a)

字符串

# 依次对两个数组的元素进行字符串连接
np.char.add(['hello'],[' xyz'])
np.char.add(['hello', 'hi'],[' abc', ' xyz'])
...['hello xyz']
...['hello abc' 'hi xyz']
# 执行多重连接
np.char.multiply('Runoob ',3)
...Runoob Runoob Runoob 
# 用于将字符串居中,并使用指定字符在左侧和右侧进行填充。str: 字符串,width: 长度,fillchar: 填充字符
np.char.center(str , width,fillchar) 
# 将字符串的第一个字母转换为大写
np.char.capitalize('runoob')
# 将字符串的每个单词的第一个字母转换为大写
np.char.title([['dsf','ds'],['sd2','23dds']])
...[['Dsf' 'Ds']
...['Sd2' '23Dds']]
# 对数组的每个元素转换为小写。它对每个元素调用 str.lower。
np.char.lower(['RUNOOB','GOOGLE'])
# 对数组的每个元素转换为大写。它对每个元素调用 str.upper。
np.char.upper(['runoob','google'])
# 通过指定分隔符对字符串进行分割,并返回数组。默认情况下,分隔符为空格。
s = np.char.split(['sdf.sd 3 w','sdf'], sep='.')
# 以换行符作为分隔符来分割字符串,并返回数组。\n,\r,\r\n 都可用作换行符。
np.char.splitlines('i\nlike runoob?')
# 使用新字符串替换字符串中的所有子字符串。
np.char.replace ('i like runoob', 'oo', 'cc')
# 对数组中的每个元素调用 str.encode 函数。 默认编码是 utf-8,可以使用标准 Python 库中的编解码器。
np.char.encode('runoob', 'cp500') 
...b'\x99\xa4\x95\x96\x96\x82'
# 对编码的元素进行 str.decode() 解码。
np.char.decode(a,'cp500')

数学函数

# 三角函数
np.sin(matrix)
np.cos(matrix)
np.tan(matrix)
np.arcsin(matrix)
np.arccos(matrix)
np.arctan(matrix)
# 舍入函数,decimal是舍入位数
np.around(a, decimals =  1)
# 向下取整,向上取值
matrix = np.floor(matrix)
matrix = np.ceil(matrix)
# 自然底数e运算,开方
matrix = np.exp(matrix)
matrix = np.sqrt(matrix)
# 乘方
s = matrix**2
# 四则运算,对应位置每个元素均单独计算
matrix = matrix - 1
matrix = matrix*2
matrix = matrix1*matrix2
np.add(a,b)
np.subtract(a,b)
np.multiply(a,b)
np.divide(a,b)
# 矩阵乘法
matrix = matrix1.dot(matrix2)
matrix = np.dot(matrix1,matrix2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值