numpy初始化:
生成矩阵(数列):array = np.array([1,2,3], dytpe=np.float32)
生成有序的矩阵(数列):array= np.arange(1,10,12).reshape((3,4))
生成有序的线段矩阵(数列):array= np.arange(12).reshape((3,4))
初始化值为0的3行4列矩阵:array = np.zeros((3.4))
初始化值为1的3行4列矩阵:array = np.ones((3.4))
初始化值接近0的3行4列矩阵:array = np.empty((3.4))
numpy基础操作:
a = np.array([[1,1],[0,1]])
b = np.arange(4).reshape(2,2)
c = a*b #逐个元素相乘
c_dot = np.dot(a,b) #矩阵乘法运算
a = np.random.random((2,4))#随机生成0到1的矩阵
np.sum(a)#求和
np.sum(a,axis=0) #axis=1行中求和,axis=0列中求和
np.min(a)#最小值,axis同理
np.max(a)#最大值,axis同理
np.mean(a)#求平均值
np.argmax(a)#求最大索引,np.argmin同理
np.median(a)#求中位数
np.cumsum(a)#累加前所有元素,输出一维数组
np.diff(a)#累差,维度不变
np.nonzero(a)#输出多个一维数组,表示行、列等
np.sort(a)#对矩阵逐行排序
np.transpose(a)#矩阵的反向(转置),行列互换
np.clip(a,a_min,a_max)#截取矩阵,大于a_max全都变成a_max,a_min同理
meshgrid
[X,Y] = meshgrid(x,y) 将向量x和y转换成矩阵X和Y;
1.矩阵X的行向量是向量x的简单复制
2.而矩阵Y的列向量是向量y的简单复制(注:X和Y均是数组,在文中统一称为矩阵了)。
假设x是长度为m的向量,y是长度为n的向量,则最终生成的矩阵X和Y的维度都是 nm (注意不是mn)。
文字描述可能不是太好理解,下面通过代码演示下:
加载数据
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
m, n = (5, 3)
x = np.linspace(0, 1, m)
y = np.linspace(0, 1, n)
X, Y = np.meshgrid(x,y)
查看向量x和向量y
x
out:
array([ 0. , 0.25, 0.5 , 0.75, 1. ])
y
out:
array([ 0. , 0.5, 1. ])
查看矩阵X和矩阵Y
X
out:
array([[ 0. , 0.25, 0.5 , 0.75, 1. ],
[ 0. , 0.25, 0.5 , 0.75, 1. ],
[ 0. , 0.25, 0.5 , 0.75, 1. ]])
Y
out:
array([[ 0. , 0. , 0. , 0. , 0. ],
[ 0.5, 0.5, 0.5, 0.5, 0.5],
[ 1. , 1. , 1. , 1. , 1. ]])