Numpy学习笔记

本文详细介绍了Numpy库的使用,包括新建二维矩阵、数值运算、排序操作、数组操作、数组连接、数组生成、矩阵运算以及文件读写。重点讲解了各种函数的使用,如np.sort()、np.argsort()、np.concatenate()、np.random模块以及文件保存和加载的方法。
摘要由CSDN通过智能技术生成

目录

一、 利用Numpy新建一个二维矩阵

二、数值运算:

三、排序操作

1、定义个矩阵

2、 np.sort()函数

3、axis参数

4、np.argsort()函数

 5、np.linspace()函数

6、np.lexsort()函数

四、数组操作

1 np.arange()

2 array.shape()函数

3 增加维度以及压缩无用维度信息

4 转置操作transpose(),.T()函数表达的效果是一样的

五、数组的连接

1 np.concatenate()函数连接,注意传入的参数需使用元组的形式

2 压平操作,np.flatten(),np.ravel()

六、数组的生成

1np.arange(),np.linspace(),np.logspace()

2 生成网格坐标

3 行向量,列向量np.r_[],np.c_[]函数

4 np.zeros(),np.ones(),np.empty 

#全0向量 np.zeros()

#生成全0或者全1矩阵,传入传输需使用元组形式 

#矩阵填充 x.fill(1)

#生成相同维度的矩阵 np.zeros_like(x)

#生成单位矩阵 np.identity(5)

5 随机模块 

#生成随机矩阵,元素范围0-1之间,维度3*2

 #生成元素个位为7,元素值范围在0-10的数组,左闭右开

 #生成元素值范围在0-10的数组,维度为(2,5)的矩阵

 #生成服从高斯分布的数组,数量为10,均值为0,标准差为0.3

#设置打印精度 

 #随机种子

 6 洗牌

七、矩阵运算

1 点乘,np.multiply(x,y)

2 矩阵内积及相乘

3 逻辑运算

八、文件读写

1 %%writefile '文件名'

 2 读取含矩阵信息的文件np.loadtxt()

3.使用np.savetxt()函数进行保存

 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],
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值