numpy函数库
numpy.dot() 函数
1、向量内积
向量其实是一维的矩阵,两个向量进行内积运算时,需要保证两个向量包含的元素个数是相同的。
例1:
import numpy as np x = np.array([1, 2, 3, 4, 5, 6 , 7]) y = np.array([2, 3, 4, 5, 6 , 7, 8]) result = np.dot(x, y) print result
2.矩阵与矩阵相乘
需要满足矩阵的乘法原则,即A=mXn,B=nXp,C=AXB=mXp。A的列数等于B的行数。
x=np.array([[1,2,3],[4,5,6]])#2X3矩阵 y=np.array([[1,2,3,4],[4,3,2,1],[0,1,1,0]])#3X4矩阵 result=np.dot(x,y)#2X4矩阵 print(result)
注意:矩阵有两层中括号,结果是ndarray数据类型
3.矩阵与向量相乘
A=mXn,B=n,则C=AXB=m,关于相乘运算时向量是否需要转置,计算时已经自动转置了。
x=np.array([[1,2,3],[4,5,6]])#2X3矩阵 y=np.array([1,0,1])#(3,)向量 result=np.dot(x,y)#结果是[ 4 10] print(result)#结果是[ 4 10],shape为(2,)
注意:如果y= np.array([[1],[0],[1]]),则y.shape为(3,1),则变成了两个矩阵相乘,则结果为[[ 4] [10]],其shape为(2,2)
4.向量与矩阵相乘
A=n,B=nXm,C=AXB为m列的一维矩阵或者向量,数据类型为ndarray。与线性代数运算一致,x的一行乘以y矩阵的每列。
x=np.array([1,0])#(2,)向量 y=np.array([[1,2,3],[4,5,6]])#2X3(或者(2,3))矩阵 result=np.dot(x,y) print(result)#结果为[1 2 3],shape为(3,)向量
注意:一般X矩阵乘以Y矩阵不等于Y矩阵乘以X矩阵。
说明:可以使用print(help(np.dot))查看函数的具体用法。通过查看发现还可用于复数运算。

numpy.ones() 函数
用于创建一个所有元素都设为 1 的数组
numpy.ones(shape, dtype=None, order='C')
这里的参数包括:
shape:定义了要创建的数组的形状。这个参数可以是一个整数(创建一维数组)或一个整数元组(创建多维数组)。
dtype:可选参数,指定数组元素的数据类型。如果未提供,默认为 float64,即双精度浮点数。
order:可选参数,指定了数组在内存中的存储顺序。'C' 代表 C语言风格,行优先;'F' 代表 Fortran 风格,列优先。
创建一维数组
import numpy as np array_1d = np.ones(5)
这会创建一个长度为 5 的一维数组,其中每个元素都是 1。
创建二维数组
array_2d = np.ones((3, 4))
这行代码生成了一个 3 行 4 列的二维数组,所有元素均为 1。
numpy.random.normal() 函数
有三个主要参数:loc、scale、size。
loc: 均值(mean),决定了分布的中心位置。
scale: 标准差(standard deviation),决定了分布的宽度。
size: 输出的形状,可以是一个整数或一个元组,决定了生成随机数的数量或多维数组的形状。
例如,生成一个形状为(3, 5)的二维数组,其中的元素服从均值为5,标准差为2的正态分布:
random_matrix = np.random.normal(loc=5, scale=2, size=(3, 5)) print(random_matrix)
[[ 1.0853625 7.92859682 5.45745868 5.79042974 5.35170552] [ 7.08409909 -0.7620579 3.19047163 4.80459271 5.55135058] [ 4.04293626 4.16127588 0.45634678 6.2246218 3.52453464]]
numpy.random.dirichlet() 函数
生成总和为特定值(例如1)的随机数列表
weight = np.random.dirichlet(np.ones(4)) print(np.ones(4)) print(weight)
[1. 1. 1. 1.] [0.00617564 0.55962866 0.3142589 0.11993681]
print(np.sum(weight)) 0.9999999999999999
浙公网安备 33010602011771号