first step
首先要学习py的一些有用的开源包,方便编写代码
- Numpy
区别于matlab,py更多的使用array数组。
- index的的起始位置为0.
- 更多的使用refence,而不是copy传参
- Numpy中的class matrix是class array的一个子集
- Numpy的rank函数,当应用于数组类型时返回的是N 维的数组。但是应用于matrix函数时返回的是N×1的矩阵类型的返回类型。
- shape = N×1,1×N,N。代表的是不一样的类型。
slicing
有两种方法来获取数组中的某一列数据:1. 使用整数和slice混合的方法将会得到更小的rank。2. 仅使用slice这种方法会得到跟原来数组一样rank的数组,因为slicing 访问数组会返回比末尾范围小一的数组值。
import numpy as np
a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
row_r1 = a[1, :] # rank =1, shape = (4,)
row_r2 = a[1:2, :] # rank =2 ,shape = (1, 4)
- integer indexing
print(a[[0, 1, 2], [0, 1, 0]]) #通过元素来访问数组
print(np.array([a[0, 0], a[1, 1], a[2, 0] ] ) ) # 另外一种方法
trick :小技巧
b= np.array([0, 2, 0, 1])
print(a[np.arange(4), b])# 通过定义数组来访问指定的integer slicing。
通过bool值来筛选数组
a = np.array([ [1, 2 ], [3, 4], [5, 6]])
bool_idx = (a > 2)
print(bool_idx) # 输出由判决式(true,false)构成的数组。
print(a[bool_idx])# 通过判决式构成的数组来indexing 数组
#可以得到满足条件的元素组成的rank =1 的数组
print(a[a > 2])# 简化版