向量化(NumPy) -- NumPy and Vectorization
暑假学习
- NumPy 语法记录
创建向量
通常传入一单个整数值或元组形式的参数
1 | # NumPy routines which allocate memory and fill arrays with value |
以上语句都将创建一个 shape
为
(4,)
,其中,第三个是随机初始化,而前两个为零向量
同样的,我们可以从列表创建向量
1 | # NumPy routines which allocate memory and fill with user specified values |
其中第一个会生成 int32
类型的向量,而第二个则是
float64
向量操作
通过索引访问
就像普通的列表那样,我们可以通过中括号语法访问
1 | #vector indexing operations on 1-D vectors |
与 python 的列表类似,同样支持负索引,
切片
与列表类似
[起始:终点:步长]
,仍为前闭后开区间,不包含终点
1 | #vector slicing operations |
单向量操作
1 | a = np.array([1,2,3,4]) |
其实都是 element-wise
的操作,即操作是对应于每一个元素,而非数学上的点积
1 | a = np.array([1, 2, 3, 4]) |
向量-向量操作
1 | a = np.array([ 1, 2, 3, 4]) |
1 | # test 1-D |
点积的结果是一个数,是
矩阵操作
创建
1 | a = np.zeros((1, 5)) |
索引访问
1 | #vector indexing operations on matrices |
这里值得注意的是第一行的
reshape(-1,2)
,我们知道arange
能够生成一个排列 [0,1,2,3,4,5],这里的reshape
将这个维向量变成了 矩阵, 这个参数实际上是留空的意思,这个参数将会根据数据与第二个维度进行计算
切片
1 | #vector 2-D slicing operations |
这里的切片仍与一维数组的切片类似,只不过现在有两个维度的参数了
[start:end:step,start:end:step]
,这里逗号前的参数是作用在行索引上的,用于选定行,后面的切片参数是针对这些行进行的