说明
NumPy 教程 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
NumPy 是 Python 的一个高性能矩阵运算的科学计算库。它主要用途是以数组的形式进行数据操作和数学运算,数据分析、机器学习大都是进行数学计算。
学习提示
pandas 依赖 Numpy,但不需要一开始就从 Numpy 的基础开始学习,在学习过程中有需要再来查看。
NumPy 提供了两个基本的对象:
NumPy 的官方文档。
ndarray 支持一维到三维的数据结构:
各维度数据的定义:
ndarray 的生成创建方法:
# 导入 numpy 库, 约定俗成别名为 np
import numpy as np
np.array([1, 2, 3])
np.array((1, 2, 3)) # 同上
# array([1, 2, 3])
np.array(((1, 2),(1, 2)))
np.array(([1, 2],[1, 2])) # 同上
# out:
array([[1, 2],
[1, 2]])
使用函数创建:
np.arange(10) # 10个, 不包括10,步长为 1
np.arange(3, 10, 0.1) # 从 3 开始到时,步长为 0.1
# 从 2.0 开始到 3.0,生成均匀的 5 个值,不包括终终值 3.0
np.linspace(2.0, 3.0, num=5, endpoint=False)
# 返回一个 6x4 的随机数组,float 型
np.random.randn(6, 4)
# 指定范围指定形状的数组,整型
np.random.randint(3,7,size=(2, 4))
# 创建从0到20随机的5个数组
np.random.randint(0, 20, 5)
# array([ 9, 10, 14, 6, 14])
# 创建值为 0 的数组
np.zeros(6) # 6个浮点 0.
np.zeros((5, 6), dtype=int) # 5 x 6 整型 0
np.ones(4) # 同上
np.empty(4) # 同上
# 创建一份和目标结构相同的 0 值数组
np.zeros_like(np.arange(6))
np.ones_like(np.arange(6)) # 同上
np.empty_like(np.arange(6)) # 同上
np.arange(4).repeat(4) # 将4个值依次重复四次,共16个
np.full((2,4), 9) # 两行四列值全为 9
np.int64 # 有符号 64 位 int 类型
np.float32 # 标准双精度浮点类型
np.complex # 由128位的浮点数组成的复数类型
np.bool # TRUE 和 FALSE 的 bool 类型
np.object # Python 中的 object 类型
np.string # 固定长度的 string 类型
np.unicode # 固定长度的 unicode 类型
np.NaN # np.float 的子类型
np.nan
# np 所有数据类型
np.sctypeDict # np.typeDict 将弃用
n.shape # 数组的形状, 返回值是一个元组
n.shape = (4, 1) # 改变形状
a = n.reshape((2,2)) # 改变原数组的形状创建一个新的
n.dtype # 数据类型
n.ndim # 维度数
n.size # 元素数
两个数组间的操作总是应用在每个元素上的。
np.array( [10,20,30,40] )[:3] # 支持类似列表的切片
a = np.array( [10,20,30,40] )
b = np.array( [1, 2, 3, 4] )
a+b # array([11, 22, 33, 44]) 矩阵相加
a-1 # array([ 9, 19, 29, 39])
4*np.sin(a)
# 以下举例数学函数,还支持非常多的数据函数
a.max() # 40
a.min() # 10
a.sum() # 100
a.std() # 11.180339887498949
a.all() # True
a.cumsum() # array([ 10, 30, 60, 100])
b.sum(axis=1) # 多维可以指定方向
np.negative(-1) # 1 相反数
x = 10
np.where(x>0, 1, 0) # array(1)
np.logical_and(x>0, x>5) # True
np.logical_or(x>0, x<5) # True
np.logical_not(x>5) # False
np.logical_xor(x>5, x==0) # 异或 True
# 输出x和y的交集
np.intersect1d(x,y)
# 输出在x中不在y中的元素
np.setdiff1d(x,y)
# 输出x和y的并集
np.union1d(x,y)
# 输出x和y的异或集
np.setxor1d(x,y)
# 以下方法传入的是一个 *arrays,如 (a1, a2, ...)
np.append() # 追加, 可读性好占内存大
np.stack()
np.dstack()
np.vstack() # 垂直合并
np.hstack() # 水平合并
np.newaxis() # 转置
np.concatenate() # 针对多个矩阵或序列的合并操作
np.split(ab, 4, axis=0) # 分隔
更新时间:2024-04-09 08:50:45 标签:numpy 简介