numpy笔记
NumPy的安装
python
1 | pip install numpy |
python
1 | import numpy as np |
NumPy属性
python
1 | Array = np.array([[1,2,3], |
python
1 | # 输出 |
NumPy创建array
NumPy中的数据类型
- NumPy中的常见数据类型有
np.int_
、np.int8
、np.int16
、np.int32
、np.int64
np.float16
、np.float32
、np.float64
- 如果不指定
dtype
, NumPy默认类型为float64
python
1 | # np.int_是np.int32类型 |
定义一个元素全为0的矩阵
python
1 | a = np.zeros((3,4)) |
定义一个元素全为1的矩阵
python
1 | a = np.ones((3,4)) |
定义一个空矩阵
python
1 | a = np.empty((2,3)) |
python
1 | # 输出得到一个元素几乎全为0的矩阵 |
用arange生成一个数列
python
1 | a = np.arange(10,20,2) # 从10到20步长为2生成数列 |
python
1 | # 输出 |
用linspace生成一个数列
python
1 | a = np.linspace(0, 1, 5) # 在0到1之间生成5个数据 |
python
1 | # 输出 |
将数列reshape成矩阵
reshape后的矩阵元素个数必须和原数列的元素个数相对应,否则会报错
python
1 | a = np.arange(12).reshape((3,4)) |
python
1 | # 输出 |
可以reshape元组列表等非NumPy的数据类型,返回NumPy数据类型
python
1 | a = (1,2,3,4,5,6) |
python
1 | # 输出 |
将矩阵flatten成数列
python
1 | a.flatten() |
NumPy的基础运算
NumPy的四则运算和乘方
+
、-
、*
、\
、**
- NumPy参与四则运算的两个向量必须是一样形状的,否则会报错
python
1 | ValueError: operands could not be broadcast together with shapes (5,) (4,) |
NumPy的三角函数
np.sin()
、np.cos()
、np.tan()
矩阵的乘法
python
1 | A*B #矩阵元素对应相乘 |
矩阵的转置
python
1 | np.transpose(A) |
最大值、最小值、求和
python
1 | np.sum(a) # 所有元素的和 |
最大值最小值的索引
python
1 | np.argmax(a, axis=1) # 每一行的最大值的索引 |
均值
python
1 | np.mean(a) # 所有元素的均值 |
加权平均
python
1 | np.average([a,b,c], weights = [aw,bw,cw]) #加权平均 |
这个式子在求加权平均,其计算式如下
中位数
python
1 | # 可以进行axis操作 |
累加
python
1 | np.cumsum([a1,a2,a3]) |
上面的式子会输出如下结果
累差
python
1 | np.diff([a1,a2,a3,a4]) |
上面的式子会输出如下结果
输出非零元素的坐标
python
1 | print(np.nonzero(np.array([[1,0,1],[0,1,0]]))) |
python
1 | # 输非零元素的坐标[0,0],[0,2],[1,1] |
排序
python
1 | np.sort(np.array([[1,7,2],[9,2,6]]),axis=None) |
python
1 | # 排序前 |
clip函数
python
1 | numpy.clip(a, a_min, a_max, out=None) |
将a中元素小于a_min的变成a_min, 大于a_max的变成a_max
Numpy的随机数
生成均匀分布的随机数
- 生成上均匀分布的随机数, 默认分布区间是
np.random.uniform()
不可指定dtype
, 其生成的随机数的类型是float
python
1 | np.random.uniform(low=0.0, high=1.0, size=None) |
python
1 | a = np.random.uniform() |
python
1 | 1) b = np.random.uniform(size= |
python
1 | 1, high=1, size=[2,3]) c = np.random.uniform(low=- |
生成均匀分布的随机整数
生成正太分布的随机数
python
1 | np.random.normal(loc=0.0, scale=1.0, size=None) |
python
1 | 0, 0.1 # mean and standard deviation mu, sigma = |
NumPy的索引
矩阵的索引
python
1 | 0,9,1).reshape(3,3) A = np.arange( |
矩阵的迭代
python
1 | # 以行进行迭代(默认以行进行迭代) |
python
1 | # 以列进行迭代 |
python
1 | # 以元素进行迭代 |
NumPy的array的合并
矩阵的合并
python
1 | 1,1,1]) A = np.array([ |
python
1 | 1,1,1]) A = np.array([ |
向量的转置
[:]
是切片操作,np.newaxis
就是None
, 增加一个空的维度
python
1 | 1,1,1]) A = np.array([ |
python
1 | 1,1,1])[:,np.newaxis] A = np.array([ |
NumPy的array的分割
python
1 | 12).reshape((3,4)) A = np.arange( |
- 指定分割位置
python
1 | # 指定分割位置, []中的数字是分割的位置,[2,3]表示分别在第2列和第3列前面进行一次分割 |
copy和deep copy
- 直接使用
=
在python中相当于c++中的引用
python
1 | a = np.arange(3) |
- 赋值操作deep copy
python
1 | a = np.arange(3) |
savetxt和loadtxt
python
1 | data = np.arange(10, dtype=np.float64) |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文羊羽!