1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
import numpy as np
N=100
np.array([])
np.zeros(N*N).reshape(N,N)
np.random.choice([1,0],N*N,p=[0.2,0.8]).reshape(N,N)
angles = 2*math.pi*np.random.rand(N)
vel = np.array(list(zip(np.sin(angles),np.cos(angles))))
x=vel.reshape(2*N)[::2]
y=vel.reshape(2*N)[1::2]
# 这段代码分别执行了以下操作:
# 1. import numpy as np:导入 numpy 库
# 2. N=100:定义 N 等于100
# 3. np.array([]):创建一个 empty 数组
# 4. np.zeros(N*N).reshape(N,N):创建一个 100x100 的 0 矩阵
# 5. np.random.choice([1,0],N*N,p=[0.2, 0.8]).reshape(N,N):创建一个 100x100 的 0/1 矩阵,0 和 1 的概率分别是 0.2 和 0.8
# 6. angles = 2*math.pi*np.random.rand(N):生成 N 个随机角度
# 7. vel = np.array(list(zip(np.sin(angles),np.cos(angles)))):根据角度计算速度向量
# 8. x=vel.reshape(2*N)[::2]:从速度向量取出 x 速度分量
# 9. y=vel.reshape(2*N)[1::2]:从速度向量取出 y 速度分量
# 整体效果是:
# - 生成一个大小为 100x100 的 0 矩阵
# - 生成一个 0/1 马塞克矩阵
# - 生成 100 个随机角度
# - 根据角度计算 100 个速度向量
# - 分离出 x 和 y 速度分量
# 所以最终的结果为:
# - 一个 0 矩阵
# - 一个 0/1 马塞克矩阵
# - 一个包含 100 个随机角度的数组
# - 两个包含 100 个 x 和 y 速度分量的数组
# 总的来说,这段代码利用 numpy 功能,生成了几个随机或零数组,主要演示了 numpy 的 shape 操作。
>>> import numpy as np
>>> from scipy.spatial.distance import pdist, squareform
>>> squareform(pdist())
# scipy.spatial.distance: scipy 库提供了一系列用于科学计算的 Python 模块。spatial 子模块提供了空间数据结构和算法。distance 子模块提供了用于计算距离和相似性矩阵的函数。
# 具体介绍:
# - numpy:
# numpy 是用于执行 large,multi-dimensional array and matrix operations 的 Python 库。它提供一个高性能的多维数组对象 ndarray,并且可以用于线性代数、傅立叶变换等方面。
# - scipy.spatial.distance:
# pdist() 函数计算矩阵中两两不同观测值之间的距离。
# squareform() 函数则将距离矩阵转换为距离向量。
>>> from scipy.spatial.distance import pdist, squareform
>>> X = [[0, 1],
[1, 1],
[2, 0],
[10, 10]]
>>> Y = pdist(X)
>>> Y
array([ 1. , 1.41421356, 2. , 10.04030396])
>>> Z = squareform(Y)
>>> Z
array([[ 0. , 1. , 2. , 10.04030396],
[ 1. , 0. , 1.41421356, 10.19803842],
[ 2. , 1.41421356, 0. , 9.21954446],
[10.04030396, 10.19803842, 9.21954446, 0. ]])
# pdist() 计算了数据点之间的距离,squareform() 将距离转换为距离矩阵。
# 总的来说,主要是导入`numpy`用于数值计算,以及`scipy.spatial.distance`中的`pdist()`和`squareform()`用于计算和转换距离。
|