2023-7-20 myluzh
Python
0x01 矩阵与向量
(1)矩阵
矩阵(matrix)和array的区别矩阵必须是2维的,但是array可以是多维的。
如下图,这个是 3x2 矩阵,即3行2列。如m为行,n 为列,那么 mxn 即 3x2。
矩阵的维数即行数x列数,矩阵元素(矩阵项):
Aij 指第 i 行,第j列的元素.
(2)向量
向量是一种特殊的矩阵,讲义中的向量一般都是列向量,下图展示的就是三维列向量(3x1)。
0x02 加法和标量乘法
(1)矩阵的加法:
行列数相等的可以加。例:
(2)矩阵的乘法:
每个元素都要乘。例:
组合算法也类似
0x03 矩阵向量乘法
矩阵和向量的乘法如图: mxn 的矩阵乘以 nx1 的向量,得到的是 mx1 的向量。
例如:
1*1+3*5 = 16
4*1+0*5 = 4
2*1+1*5 = 7
矩阵乘法遵循准则:
(M行, N列)*(N行,L列) = (M行,L列)
0x04 矩阵乘法
(1)介绍
mxn 矩阵乘以 nxo 矩阵,变成 mxo 矩阵
确保第一个矩阵的列数等于第二个矩阵的行数,否则无法相乘。
举例:比如说现在有两个矩阵 A 和 B,那 么它们的乘积就可以表示为图中所示的形式。...
阅读全文>>
标签: python numpy 矩阵 向量 np.matmul np.dot
评论(0)
(537)
2023-7-20 myluzh
Python
0x01 数组与数运算
import numpy as np
arr = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])
"""
arr + 1
array([[2, 3, 4, 3, 2, 5],
[6, 7, 2, 3, 4, 2]])
arr / 2
array([[0.5, 1. , 1.5, 1. , 0.5, 2. ],
[2.5, 3. , 0.5, 1. , 1.5, 0.5]])
"""
# 可以对比python列表的运算,看出区别
a = [1, 2, 3, 4, 5]
"""
a*3
Out[3]: [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
"""
0x02 数组与数组运算
数组在进行矢量化运算时,要求数组的形状是相等的。当形状不相等的数组执行算术运算的时候,就会出现广播机制,该机制会对数组进行扩展,使数组的shape属性值一样,这样,就可以进行矢量化运算了。下面通过一个例子进行说明:
import numpy as np
...
阅读全文>>
标签: python numpy
评论(0)
(476)
2023-7-20 myluzh
Python
0x01 逻辑运算
import numpy as np
# 生成40-100的10行5列数据
arr1 = np.random.randint(40, 100, (10, 5))
"""
#查看下arr1
arr1 Out[3]:
array([[95, 65, 74, 76, 64],
[95, 62, 74, 81, 59],
[48, 93, 87, 40, 63],
[99, 68, 57, 95, 51],
[75, 78, 43, 50, 49],
[75, 74, 86, 50, 98],
[62, 61, 53, 40, 73],
[58, 63, 99, 76, 85],
[52, 44, 65, 77, 51],
[90, 74, 93, 78, 46]])
"""
# 取6行开始取,每行取0-5列
arr2 = arr1[6:, 0:5]
"""
# 查看下arr2
arr2 Out[4]:
array([[62, 61...
阅读全文>>
标签: python ndarray
评论(0)
(450)
2023-7-14 myluzh
Python
0x01 数组索引与切片用法
import numpy as np
# (2)二维数组
# 首先生成一个二维数组
arr2 = np.random.uniform(-1, 2, size=(5, 5))
"""
# 查看下arr2
arr2 Out[3]:
array([[ 1.05865188, 1.18597622, -0.81279676, 1.79444952, 0.71910054],
[-0.62385763, -0.61713265, 0.94918552, -0.24394799, 1.81343914],
[-0.71354709, -0.93964984, 0.96237785, 1.23973639, 0.11628672],
[ 0.02623292, 1.68481857, -0.79207649, 0.79625302, -0.32104851],
[ 0.75240426, 0.15582726, -0.87529045, -0.28858853, 0.01173709]])
# 只要...
阅读全文>>
标签: python numpy 数组
评论(0)
(455)
2023-7-14 myluzh
Python
0x01 什么是正态分布
正态分布是一种概率分布。正态分布是具有两个参数u和o的连续型随机变量的分布,第一参数u是服从正态分布的随机变量的均值,第二个参数o是此随机变量的方差,所以正态分布记作N(μ,σ)。
0x02 生成正态分布的随机数组
import numpy as np
import matplotlib.pyplot as plt
# 生成均值为1.75,标准差为1的正态分布数据,100000000个
x1 = np.random.normal(1.75, 1, 10000000)
# 绘图
plt.figure(figsize=(18, 8), dpi=100) # 创建画布
plt.hist(x1, 1000) # 绘制直方图
plt.show() # 显示图像
0x03 生成均匀分布的随机数组
import numpy as np
import matplotlib.pyplot as plt
# 生成均匀分布的随机数,最低-1最高1,100000000个
x2 = np.random.uniform(-1, 1, 100000000)
p...
阅读全文>>
标签: python numpy 随机数组 正态分布 均匀分布
评论(0)
(773)
2023-7-14 myluzh
Python
0x01 生成01数组
import numpy as np
# 生成4行6列0数组
ones = np.ones([4, 6])
"""
查看下zeros Out[3]:
array([[0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0.]])
"""
# 生成3行7列1数组
zeros = np.zeros([3, 7])
"""
查看下ones Out[4]:
array([[1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1.]])
"""
0x02 从现有数组生成(浅拷贝np.asarray与深拷贝np.arrary的区别)
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
a1 = np.array(a) ...
阅读全文>>
标签: python numpy 01数组 固定数组
评论(0)
(343)