什么是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)