目录
4 转置操作transpose(),.T()函数表达的效果是一样的
1 np.concatenate()函数连接,注意传入的参数需使用元组的形式
2 压平操作,np.flatten(),np.ravel()
1np.arange(),np.linspace(),np.logspace()
4 np.zeros(),np.ones(),np.empty
#生成服从高斯分布的数组,数量为10,均值为0,标准差为0.3
4 使用np.save()函数,保存为npy文件,np.load()函数读取文件
5 使用np.savez()函数,保存为npz文件,np.load()读取文件
一、 利用Numpy新建一个二维矩阵
输入:
wang_array = np.array([[1,2,3],[4,5,6]])
wang_array
二、数值运算:
# 矩阵所有元素求均值 wang_array.mean() # 矩阵所有元素求和 wang_array.sum() # 矩阵所有元素求标准差 wang_array.std() # 矩阵所有元素求方差 wang_array.var() # 矩阵所有元素高低阈值修改 wang_array.clip(2,4) # 矩阵所有元素四舍五入 wang_array.round() wang_array.round(decimals = 1) #保留一位小数
上面均是对矩阵内所有元素进行操作,如果说对矩阵中行或者列进行求和,求标准差等运算的话,可以在函数中使用 axis=0或者1参数,如果axis=0,表示沿着列进行操作,如果axis=1,则表示沿着行进行操作。
三、排序操作
1、定义个矩阵
In [15]:
wang_array = np.array([[1.1,2.2,3.3],
[4.2,4.4,1.2],
[1.0,2.1,3.2]])
wang_array
Out[15]:
array([[1.1, 2.2, 3.3],
[4.2, 4.4, 1.2],
[1. , 2.1, 3.2]])
2、 np.sort()函数
对wang_array所有元素进行排序
#对wang_array所有元素进行排序
In [18]:
np.sort(wang_array)
Out[18]:
array([[1.1, 2.2, 3.3],
[1.2, 4.2, 4.4],
[1. , 2.1, 3.2]])
3、axis参数
同样,如果加上axis参数,则会依据参数的值,分别进行行排序或者列排序
#同样,如果加上axis参数,则会依据参数的值,分别进行行排序或者列排序,
#比如axis=0时,每列进行排序,axis=1时,每行进行排序
In [6]:
np.sort(wang_array,axis=0)
Out[6]:
array([[1. , 2.1, 1.2],
[1.1, 2.2, 3.2],
[4.2, 4.4, 3.3]])
4、np.argsort()函数
获取排序后原值的索引值
#获取排序后原值的索引值
In [7]:
np.argsort(wang_array)
Out[7]:
array([[0, 1, 2],
[2, 0, 1],
[0, 1, 2]], dtype=int64)
5、np.linspace()函数
产生一个5个元素的行向量,各元素之间等距。
In [11]:
wang_array1 = np.linspace(0,10,5)
wang_array1
Out[11]:
array([ 0. , 2.5, 5. , 7.5, 10. ])
向向量中插入一些数字,比如[1,3,6,7,9],或者插入后的索引位置,使用np.searchsorted()函数
In [14]:
values = np.array([1,3,6,7,9])
np.searchsorted(wang_array1,values)
Out[14]:
array([1, 2, 3, 3, 4], dtype=int64)
6、np.lexsort()函数
对矩阵进行排序操作,首先第一列降序排列,然后第三列升序排列,在然后第一列降序排列
In [30]:
wang_array2 = np.array([[2,2,6,9],
[4,1,4,3],
[3,5,1,7],
[2,2,4,4]])
wang_array2
Out[30]:
array([[2, 2, 6, 9],
[4, 1, 4, 3],
[3, 5, 1, 7],
[2, 2, 4, 4]])
#对矩阵进行排序操作,首先第一列降序排列,然后第三列升序排列
In [38]:
index = np.lexsort([-1*wang_array2[:,0],wang_array2[:,2]])
In [39]:
wang_array2 = wang_array2[index]
wang_array2
Out[39]:
array([[3, 5, 1, 7],
[4, 1, 4, 3],
[2, 2, 4, 4],
[2, 2, 6, 9]])
四、数组操作
1 np.arange()
wang_array.shape
#生成0-9向量,10个元素
In [41]:
wang_array =np.arange(10)
wang_array
Out[41]:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
2 array.shape()函数
输出向量的长度或者矩阵的行、列数
#显示该向量的长度
In [42]:
wang_array.shape
#因为wang_array是向量,所以输出只有1个数字
Out[42]:
(10,)
#通过给一维矩阵的形状赋值,可以修改矩阵的行、列数,如:
In [44]:
wang_array.shape=2,5
wang_array
Out[44]:
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
3 增加维度以及压缩无用维度信息
压缩维度使用squeeze()函数
#增加维度
In [47]:
_array = wang_array[np.newaxis,:]
wang_array
Out[47]:
array([[[0, 1],
[2, 3],
[4, 5],
[6, 7],
[8, 9]]])
#增加维度后,显示矩阵的维度信息
In [48]:
wang_array.shape
Out[48]:
(1, 5, 2)
#对应是压缩无效的维度信息
In [52]:
wang_array=wang_array.squeeze()
wang_array
Out[52]:
array([[0, 1],
[2, 3],
[4, 5],
[6, 7],
[8, 9]])
In [53]:
wang_array.shape
Out[53]:
(5, 2)
4 转置操作transpose(),.T()函数表达的效果是一样的
#transpose(),.T()函数表达的效果是一样的
In [54]:
wang_array.transpose()
Out[54]:
array([[0, 2, 4, 6, 8],
[1, 3, 5, 7, 9]])
In [56]:
wang_array.T
Out[56]:
array([[0, 2, 4, 6, 8],
[1, 3, 5, 7, 9]])
五、数组的连接
1 np.concatenate()函数连接,注意传入的参数需使用元组的形式
axis=0表示按列进行连接,axis=1表示按行连接
--还有2个等价的连接方式,np.vstack(),np.hstack()
#a,b两个矩阵,使用np.concatenate()函数连接,注意传入的参数需使用元组的形式
#axis=0表示按列进行连接,axis=1表示按行连接
In [57]:
a = np.array([[1,3,43,21],
[21,32,5,2]])
b = np.array([[10,213,2143,121],
[241,332,52,22]])
In [61]:
c = np.concatenate((a,b),axis = 0)
c
Out[61]:
array([[ 1, 3, 43, 21],
[ 21, 32, 5, 2],
[ 10, 213, 2143, 121],