【机器学习】numpy基础铺垫

什么是Numpy? 一种支持数学高维度和矩阵计算的python包,集成在Anaconda中。

Numpy基础

import numpy as np#numpy的基本用法 array = np.array((1,2,3)) print(array)#numpy的几种属性 print("number of dim" , array.ndim) #维度 print("Shape",array.shape)#行数和列数 print("Size",array.size)#元素个数#指定数据 a = np.array([2 , 23 , 4] , dtype = np.int) print(a.dtype)a = np.array([2 , 23 , 4] , dtype = np.int32) print(a.dtype)a = np.array([2 , 23 , 4] , dtype = np.float) print(a.dtype)a = np.array([2 , 23 , 4] , dtype = np.float32) print(a.dtype)#创建特定数据 a = np.array([[2 , 23 , 4] , [2 , 32 , 4]]) print(a)#全0 / 1,全空数组 a = np.zeros((3 , 4)) b = np.ones((2 , 3) , dtype = np.int32) c = np.empty((3 , 4))# 其实每个数值都接近0 print(a) print(b , b.dtype) print(c)#连续数组 a = np.arange(10 , 20 , 2) #10 - 19的数据,2步 print(a) a = np.arange(13).reshape((3 , 4)) # 将一行数据变成一个3*4的其他的都不行 print(a)#linspace:分割线段,如何分割?当然也可以reshape a = np.linspace(1 , 10 , 20) print(a)


numpy基础运算1
import numpy as np a = np.array((1 , 2 , 3)) b = np.array((2 , 3 , 4))c = a + b**2 c = a * b#对每一项对应乘 c = 10 * np.sin(a)#数学函数工具 print(b > 3)# 对每一项进行判断a = np.array([[1 , 1] , [0 , 1]]) b = np.arange(4).reshape((2 , 2))# 默认将数据填进去 # 矩阵乘积 # c_dot = np.dot(a , b) # c_dot_2 = a.dot(b)#sum(),min(),max()三种脚本,横 1纵 0 a = np.random.random((2 , 4))#随机产生一个(0,1)之间的数 print(np.sum(a , axis = 1))#对 a 的所有数据求和,axis是轴的意思,axis = 1按照横轴的意思 print(np.min(a , axis = 0))#axis = 0 是按纵轴的意思 print(np.max(a))


numpy基础运算2
import numpy as np# argmin与 argmax :对应矩阵的最小元素和最大元素索引a = np.arange(2 , 14).reshape((3 , 4))print(np.argmin(a)) print(np.argmax(a))#mean, average 求平均值 print(np.mean(a)) print(np.average(a)) print(a.mean())#求中位数 print(a.median())# 累加函数:每个元素加到这一项的时候的元素和 print(np.cumsum(a)) #累差函数:计算每一行后一项与前一项的差,将差表示出来。 print(np.diff(a))#将矩阵中非零元素的行和列的值单独构成两个矩阵。 print(np.nonzero(a))#排序:每一行单独排序,从小到大 a = np.arange(14 , 2 , -1).reshape((3 , 4)) print(np.sort(a))# 转置 :两种方式 #print(np.transpose(a)) print(a.T)# 切分:将数组中大于最大值的数字用最大值代替,小于最小值的数字用最小值代替 print(np.clip(a , 5 , 9))

numpy索引
import numpy as np# 一维矩阵索引 #a = np.arange(3 , 14) #print(a[3])# 二维矩阵索引 a = np.arange(3 , 15).reshape((3 , 4)) print(a[2]) # 这里输出的是第二行# 输出二维地址位置 print(a[1][1]) print(a[1 , 1])# 利用 list切片操作 print(a[1 , 1:3])#将第2行的第2-4(但不包含第4列)的数据切分出来.#逐列打印操作:先转置,再输出 for column in a.T: print(column)#迭代输出,两种形式。 print(a.flatten())# 将多为矩阵展开成 1行的数列。for item in a.flat: print(item) # flat是一个迭代器,将每一个数据都迭代一遍输出。

【【机器学习】numpy基础铺垫】
numpy 合并
import numpy as np# vstack的数据合并 a = np.array([1 , 1 , 1 , 1]) b = np.array([2 , 2 , 2 , 2])c = np.vstack((a , b)) print(a.shape , c.shape) print(np.vstack((a , b)))d = np.hstack((a , b))#horizontal stack 行合并,左右合并 print(d) print(a.shape , d.shape)# 1 * n这种是不能利用a.T转置的,需要利用下面这种手法 print(a[np.newaxis, : ]) print(a[np.newaxis , : ].shape) print(a[: , np.newaxis]) print(a.T)


Numpy array 分割
import numpy as npa = np.arange(12).reshape((3 , 4)) print(a)# 等量分割 print(np.split(a , 2 , axis = 1))# 将两列分成一组,且必须得是能分的,否则会报错。 print(np.split(a , 3 , axis = 0))# 将3行分成一组,同上。# 不等量分割 print(np.array_split(a , 3 , axis = 1))#其他分割方式,与第一种一致 print(np.vsplit(a , 3)) #vertical split print(np.hsplit(a , 2)) #horizon split


numpy 复制
import numpy as np#对于numpy的赋值,“ = ”符号就相当于对地址修改,一改全改。 a = np.arange(4) print(a)d = a d[0] = 11 print(a)# 利用copy得到的数据将不会有关联性。 d = a.copy() d[0] = 22 print(a)

    推荐阅读