numpy基本用法讲解

1.创建数组的方法:

最基本:a=np.array([1,2]),将传入的python列表转化为np数组,注意:源数据是ndarray数据时,array是创建一个新的数组,而 asarray仍旧使用原来的数据源。所以使用asarray创建的数组改变时,原数组也改变了,一般我们都用array.

import numpy as np
a=np.arange(0,10,2)#创建起始为0,结束为10,但是不包括10,步长为2的序列
#a: [0 2 4 6 8]
b=np.ones([2,3])#创建元素全为1的矩阵
#b: [[1. 1. 1.]
#   [1. 1. 1.]]
c=np.zeros([1,3])#创建元素全为0的矩阵
#c: [[0. 0. 0.]]
d=np.eye(3,5)#创建单位矩阵
#d: [[1. 0. 0. 0. 0.]
# [0. 1. 0. 0. 0.]
# [0. 0. 1. 0. 0.]]
e=np.linspace(2,6,3)#创建2为首项,6为尾项,共3个元素(start,stop,num)
#e: [2. 4. 6.]
f=np.logspace(2,8,3,base=2)#创建一个底数为2,首项为2^1,尾项为2^8,共3个元素,如果未指定base的话默认为10        注意:1.e+05  就是0.00005
#f: [  4.  32. 256.]

2.数组的切片操作及改变数组形状的方法

import numpy as np
b=np.array([[1,2],[2,4],[3,1]])
c=b[0:2,:]#数组切片中,取前不取后,前面数字省略从0取,后面数字胜率,从最后取.  -1代表最后一个位置的元素。
'''输出c: [[1 2]
        [2 4]]'''
d=b.reshape(2,3)#创建一个新的数组,不改变原来数组的形状
#注意:reshape(-1,2)中的-1代表不知道是几,系统根据数组中元素数量自动匹配。
'''输出d:[[1 2 2]
        [4 3 1]]'''
b.resize(1,6)#改变原来数组的形状
'''输出b:[[1 2 2 4 3 1]]'''

可以通过c=np.arange(20).reshape(4,5)快捷的创建数组

3.矩阵运算

1.数组间的+,-,*,/ 都是数组中对应元素相互加减乘除。
2.c=np.matmul(A,B)或者c=np.dot(A,B)都是计算矩阵之间的乘法。
3.c=np.transpose(A)求矩阵A的转置。
4.c=np.linalg.inv(A)求矩阵A的逆矩阵。

4.数组中元素运算操作

1.数组中元素求和

import numpy as np
a=[[1,2,3],[2,4,6]]
b=np.sum(a)#对数组a中的所有元素求和
'''输出:  18'''
#轴:数组中的每一个维度称为一个轴(由0开始)
#秩:轴的个数(注意与线性代数中的秩区分)
c=np.sum(a,axis=1)#将第二个轴相加
'''输出:[6,12]'''

以下的运算用的都是这里面的数组a

2.数组中元素求乘积

d=np.prod(a)
'''输出: 288'''

3.相邻差

d=np.diff(a)
'''输出: [[1 1]
        [2 2]]'''

4.计算平方根(就是开根号)

d=np.sqrt(a)#square root平方根

5.计算各元素指数值(就是e的元素次方)

d=np.exp(a)

6.计算各元素绝对值:

d=np.abs(a)

7.数组堆叠运算

a=np.stack((x,y),axis=0)#在轴0上堆叠,数组由外到内维度升高,注意堆叠和求和的区别,堆叠不求和。

5.矩阵及矩阵运算(处理矩阵问题一般都是用numpy库)

1.创建矩阵:

a=np.mat('1,2,3;4,5,6')#矩阵:matrix
#或者是a=np.mat([[1,2,3],[4,5,6]])
print(type(a),a)
'''<class 'numpy.matrix'> [[1 2 3]
 						[4 5 6]]'''

2.矩阵转置

b=a.T#这里的a可以是数组或者矩阵,但是不能是列表。输出转置的数据类型与传入的数据相同,即a是数组,b就是数组,a是矩阵,b就是矩阵。
b=np.transpose(a)#这里的a可以是矩阵,列表或者数组,如果传入的数据是数组或列表,则传出的数据是数组;如果传入的是矩阵,则传出的是矩阵

推荐用np.transpose,避免报错。
矩阵:matrix ;列表:list ;数组:array

3.矩阵求逆(注意,求逆的矩阵必须是方阵,否则会报错)

b=a.I#传入的只能是矩阵
b=np.linalg.inv(a)#传入的只能是矩阵或者数组,输出的数据类型与输入相同。

同样,推荐使用numpy库中的np.linalg.inv()方法.

6.随机数(随机数模块np.random)

  1. 创建随机数a=np.random.rand(2,3),产生一个2*3的随机数数组,取值是在[0,1)之间的均匀分布的浮点数,如果不传入参数则随机返回一个数字。
  2. a=np.random.uniform(1,5,(2,3)),产生一个2*3的随机数组,取值在1到5之间的浮点数,如果要产生整数类型的话,就用a=np.random.randint(1,5,(2,3))就行。
  3. a=np.random.randn(1,6)产生一个2*3的数组,符合标准正态分布(就是期望值μ=0,即曲线图象对称轴为Y轴,标准差σ=1条件下的正态分布)
  4. a=np.random.normal(1,3,(3,2))产生一个均值为1,标准差为3的3*2的随机数组,注意是随机数组,只是他的值以均值为中心,并不是产生数组的的值的平均数就是1.这个与tensorflow中的tf.random.normal()的作用是一样的,只不过tf模块中产生的是张量,np中产生的是np数组。在这里插入图片描述
  5. 设置随机种子:np.random.seed(0),这里设置随机算法的开始值为0,则每一次以0为开始值的随机算法,生成的随机数都是相同的(即每个随机种子对应一组固定的随机数),注意,随机种子只起一次作用,即随机种子只能保证随机种子的下一条语句产生的随机数不变,想要多数随机数不变,只需要在相应位置设置多个开始值相同的随机种子即可。
  6. 打乱数组顺序np.random.shuffle(a)如果是数组只打乱第一维,即axis=0.若果需要全部打乱就将数组resize一下就行。

numpy的基本用法就到这里了,注意numpy的random模块与tensorflow的random模块有诸多相同之处,注意区分。

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NumPy是Python中一个广泛使用的科学计算库,numpy.random模块是NumPy中专门用于生成各种随机数的模块,提供了非常丰富的随机数生成函数。 下面是一些常用的numpy.random函数: 1. numpy.random.rand(d0, d1, ..., dn):生成一个0到1之间的随机浮点数,可以传入多维度的参数。 2. numpy.random.randn(d0, d1, ..., dn):生成一个标准正态分布的随机浮点数,可以传入多维度的参数。 3. numpy.random.randint(low, high=None, size=None, dtype='l'):生成一个指定范围内的整数,可以指定生成的数组形状。 4. numpy.random.normal(loc=0.0, scale=1.0, size=None):生成一个指定均值和标准差的正态分布随机数,可以指定生成的数组形状。 5. numpy.random.choice(a, size=None, replace=True, p=None):从序列a中随机选择元素,可以指定元素的概率分布。 6. numpy.random.shuffle(x):将数组x中的元素随机打乱。 7. numpy.random.seed(seed=None):指定随机数生成器的种子,以便于重复实验。 使用方法如下: ```python import numpy as np # 生成一个2x3的随机浮点数数组 print(np.random.rand(2, 3)) # 生成一个2x3的标准正态分布随机数数组 print(np.random.randn(2, 3)) # 生成一个1到10之间的随机整数数组,形状为2x3 print(np.random.randint(1, 10, size=(2, 3))) # 生成一个均值为0,标准差为1的正态分布随机数数组,形状为2x3 print(np.random.normal(loc=0, scale=1, size=(2, 3))) # 从列表中随机选择两个元素 a = [1, 2, 3, 4, 5] print(np.random.choice(a, size=2)) # 将列表随机打乱 np.random.shuffle(a) print(a) # 指定随机数生成器的种子,以便于重复实验 np.random.seed(0) print(np.random.rand(2, 3)) np.random.seed(0) print(np.random.rand(2, 3)) np.random.seed(1) print(np.random.rand(2, 3)) ``` 以上代码输出结果如下: ``` [[0.57959628 0.08073821 0.10431304] [0.15776023 0.68428247 0.60793829]] [[ 0.12372191 -0.31097988 0.37756379] [-1.2319817 -0.3248719 0.56368516]] [[8 4 7] [4 9 5]] [[ 0.5488135 1.96578057 0.24875314] [ 0.16454949 0.56702035 -0.22232814]] [1 3] [4, 5, 2, 1, 3] [[0.5488135 0.71518937 0.60276338] [0.54488318 0.4236548 0.64589411]] [[0.5488135 0.71518937 0.60276338] [0.54488318 0.4236548 0.64589411]] [[4.17022005e-01 7.20324493e-01 1.14374817e-04] [3.02332573e-01 1.46755891e-01 9.23385948e-02]] ``` 需要注意的是,numpy.random模块中的随机数生成器都是伪随机数生成器,它们的随机数序列是通过固定的算法和种子生成的,因此可以通过设置种子来控制随机数的生成,以便于重复实验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值