numpy
基本属性
import numpy as np
arr = np.arange(15).reshape((3,5))
print(arr) # [[ 0 1 2 3 4],[ 5 6 7 8 9],[10 11 12 13 14]]
print(type(arr)) # 类型 <class 'numpy.ndarray'>
print(arr.shape) # 形状元组 (3, 5)
print(arr.ndim) # 维度 2
print(arr.dtype) # 元素类型 int64
print(arr.size) # 元素总数量 15
print(arr.itemsize) # 元素字节 8
方法调用获取属性
import numpy as np
arr = np.arange(15).reshape((3,5))
print(arr)
print(np.shape(arr)) # (3,5)
print(np.ndim(arr)) # 2
print(np.size(arr)) # 15
创建ndarray
列表创建
import numpy as np
arr = np.array([1,2,3,4,5])
print(arr)
print(type(arr))
zeros() 全0
import numpy as np
arr = np.zeros((3,5))
print(arr)
print(arr.shape)
print(arr.dtype)
ones() 全1
import numpy as np
arr = np.ones((3,5))
print(arr)
print(arr.shape)
print(arr.dtype)
empty() 内容随机依赖内存状态,不是空对象!
import numpy as np
arr = np.empty((3,5))
print(arr)
print(arr.shape)
print(arr.dtype)
arange(起始值,结束值,步长,类型) 左闭右开
import numpy as np
arr = np.arange(1,5,2,dtype=np.int64)
print(arr) # [1 3]
print(arr.shape) # (2,)
print(arr.dtype) # int64
matrix() 生成二维数组
import numpy as np
arr = np.matrix('1 2;3 4')
# arr = np.matrix('1,2;3,4')
# arr=np.matrix([[1,2],[3,4]])
print(arr) # [[1 2],[3 4]]
print(type(arr)) # ndarray的子类 <class 'numpy.matrix'>
print(arr.shape) # (2, 2)
print(arr.dtype) # int64
随机数矩阵
import numpy as np
arr = np.random.rand(2,3) # 范围 [0.0,1.0)
print(arr) # [[0.70754242 0.947653 0.15737358],[0.24641693 0.92461219 0.649437
print(type(arr)) # <class 'numpy.ndarray'>
print(arr.shape) # (2, 3)
print(arr.dtype) # float64
import numpy as np
arr = np.random.randint(-1,5,size=(2,3)) # 范围 [-1,5),2行3列,整数
print(arr)
print(type(arr)) # <class 'numpy.ndarray'>
print(arr.shape) # (2, 3)
print(arr.dtype) # int32
import numpy as np
arr = np.random.uniform(-1,5,size=(2,3)) # 范围 [-1,5),2行3列,浮点数
print(arr)
print(type(arr)) # <class 'numpy.ndarray'>
print(arr.shape) # (2, 3)
print(arr.dtype) # float64
等比数列 logspace
import numpy as np
arr = np.logspace(0,10,10,base=10) # 起始幂值,结束幂值,元素个数,底数
print(arr) # [1.00000000e+00 1.29154967e+01 1.66810054e+02 2.15443469e+03,2.78255940e+04 3.59381366e+05 4.64158883e+06 5.99484250e+07,7.74263683e+08 1.00000000e+10]
print(type(arr)) # <class 'numpy.ndarray'>
print(arr.shape) # (10,)
print(arr.dtype) # float64
等差数列 lispace
import numpy as np
arr = np.linspace(0,5,5,endpoint=True) # 起始值,结束值,元素个数,是否包含结束值
print(arr) # [0. 1.25 2.5 3.75 5. ]
print(type(arr)) # <class 'numpy.ndarray'>
print(arr.shape) # (5,)
print(arr.dtype) # float64
np.random.randn() 返回符合标准正态分布的数据
import numpy as np
arr = np.random.randn(2,3)
print(arr)
print(arr.shape)
print(arr.dtype)
类型转换
创建时指定参数 dtype
import numpy as np
arr = np.ones((3,5),dtype=np.float32)
print(arr)
print(arr.shape)
print(arr.dtype)
创建后调用astype()
import numpy as np
arr = np.ones((3,5)).astype(np.float32)
print(arr)
print(arr.shape)
print(arr.dtype)
内置函数
基本函数
- np.ceil(arr) 向上取整
- np.floor(arr) 向下取整
- np.rint(arr) 四舍五入
- np.isnan(arr) 元素是否为NAN 返回形状相同,元素都是 bool 类型的 ndarray
- np.multiply(arr1,arr2) 元素相乘
- np.divide(arr1,arr2) 元素相除
- np.abs(arr) 元素绝对值
- np.where(condition,x,y) 三元运算,示例:np.where(arr>0,1,-1)
统计函数
- np.mean(arr) 平均值
- np.sum(arr) 和
- np.max(arr) 最大值
- np.min(arr) 最小值
- np.std(arr) 标准差
- np.var(arr) 方差
- np.argmax(arr) 最大值下标索引
- np.argmin(arr) 最小值下标索引
- np.cumsum(arr) 返回一维数组,每个元素都是之前所有元素累加和
- np.cumprod(arr) 返回一维数组,每个元素都是之前所有元素累加积
- 多维数组默认统计全部维度,axis参数可以按指定轴心统计,0列1行
比较函数
- np.any(arr>0) 任意元素满足返回True
- np.all(arr>0) 所有元素满足返回True
排序
- np.sort(arr) 排序返回新副本
- arr.sort() 原地修改
去重
运算
基本运算
矩阵运算
- arr1.dot(arr2) 点乘
- np.matmul(arr1,arr2) 矩阵乘法
- arr1 @ arr2
import numpy as np
arr1 = np.arange(6).reshape(2,3)
arr2 = np.arange(6).reshape(3,2)
print(arr1 @ arr2) # [[10 13],[28 40]]
print(arr1.dot(arr2)) # [[10 13],[28 40]]
print(np.matmul(arr1,arr2)) # [[10 13],[28 40]]
广播机制
- 当一个数组与一个标量,或与一个不同形状但兼容的数组相乘时,会触发广播机制。