Numpy
(unfinished) Numpy的ndarray、数学公式和矩阵使用、数据切片
NDarray and Matrix
lst = [[1,2,3],[4,5,6]] #2*3 array
a = np.array(lst) #create array from list
print(a.shape)
#(2,3) 因为这是一个2*3的矩阵
print(a.ndim)
#2 2 dimensions
print(a.dtype)
# numpy里的data type得是同一种类型,才能保证快速计算
print(a.size)
#6 总共有6个元素 arange()和linspace()都可以生成一串数,不过linspace生成的是指定gap的数目,可以是float。
b = np.arange(0, 10, 2, dtype='float') # create 1d array, [start, stop)
print(type(b)) # class 'numpy.ndarray'
print(b) #[0. 2. 4. 6. 8.]
print(b.shape) #(5,)
c = np.linspace(1.5, 2.5, 9) # create 1d array with float, [start, stop]
print(type(c)) # class 'numpy.ndarray'
print(c) #[1.5 1.625 1.75 1.875 2. 2.125 2.25 2.375 2.5 ]
print(c.shape) #(9,)如果混着用slicing和integer indexing来获取matrix中的某一列,那么integer indexing不会保留数据原始的rank,但是slicing可以,比如
当然也可以reindex一下 和之前一样,-1表示系统来根据element的个数指定行数。
Numpy自己的加减乘除是一一对应的运算,比如以下都是element-wise
如果想要做矩阵乘法,要用
沿着列或者行的加减法
轴(axis):每一个线性的数组称为是一个轴,也就是维度(dimensions)。比如,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组,所以一维数组就是ndarray中的轴,第一个轴(也就是第0轴)相当于是底层数组,第二个轴(也就是第1轴)是底层数组里的数组。
很多时候可以声明axis。axis=0 or 'index',表示沿着第0轴进行操作,即对每一列进行操作, apply function to each column;axis=1 or 'columns',表示沿着第1轴进行操作,即对每一行进行操作, apply function to each row。
秩(rank):维数,一维数组的秩为1,二维数组的秩为2,以此类推。即轴的个数。

用True/False可以很容易的为np array 做masking 比如
Broadcasting [详情看这个] 针对一行或一列做集体操作,比如给一行加一个数,给另一行加另一个数。
numpy里的random,可以用来有放回抽样、无放回抽样、按照一定概率抽样、生成两个数据点范围内的random number
也可以用np手动做train test split
np.set_printoptions(threshold = np.nan) 可以让numpy显示出来所有中间那些被隐藏掉的elements。
Last updated