# 5个常用的py库:numpy,pandas,Scipy(实现了线性代数,傅里叶变换,信号和图像处理),matplotlib,skitlearn
# 矩阵:矩阵的数组,即二维数组,其中向量和标量都是矩阵的特例
# 向量:是指1*n或者n*1的矩阵
# 标量:1*1的矩阵
# 数组:n维的数组,是矩阵的延伸
# 矩阵:二维数组; 向量:1*n或者n*1
# 数组的创建和访问
import numpy as np
list_1 = [1,2,3,4]
list_1
# 通过python中的list来创建numpy中的array
array_1 = np.array(list_1)
# 创建一个一维的array数组
array_1
list_2 = [5,6,7,8]
array_2 = np.array([list_1,list_2])
array_2
# 返回array数组的维数
array_2.shape
# 通过size返回数组中元素的个数
array_2.size
# 使用dtype返回array数组中数据的数据类型
array_2.dtype
# 当array中的数据元素类型不一致时
# 当有int,有float时,array会将数据转化为精确度最高的类型,即float
array_3 = np.array([[1.0,2,3],[4.0,5,6]])
array_3.dtype
array_4 = np.arange(1,10,2)
array_4
# 使用zeros创建1*5的矩阵
np.zeros(5)
np.zeros([2,3])
# 创建单位矩阵
np.eye(5)
a = np.arange(1,10)
a
# 一维数组访问元素的方式和列表中切片访问的方式是一致的
a[1]
# 多维数组元素的访问
b = np.array([[1,2,3],[4,5,6]])
b
b[1][0]
c = np.array([[1,2,3],[4,5,6],[7,8,9]])
c
c[:2,1:]
# 数组与矩阵的运算
# 快速创建数组
import numpy as np
# 创建长度为10的一维数组,数组里面的10个值是符合标准的正态分布的
np.random.randn(10)
# 返回一个10以内的int型的数据
np.random.randint(10)
# 返回一个10以内的多维数组
np.random.randint(10,size=(2,3))
# 返回一个10以内的一维数组
np.random.randint(10,size=20)
# 通过reshape将等量维数的数组进行变形
np.random.randint(10,size=20).reshape(4,5)
# 数组运算
a = np.random.randint(10,size=20).reshape(4,5)
b = np.random.randint(10,size=20).reshape(4,5)
# 创建矩阵
np.mat([[1,2,3],[4,5,6]])
# 将数组转换成矩阵
a
np.mat(a)
# 矩阵的运算
A = np.mat(a)
B = np.mat(b)
# 矩阵乘法,a矩阵的行数必须等于B矩阵的列数
# array常用函数
a = np.random.randint(10,size=20).reshape(4,5)
# 使用unique返回数组中唯一的值
np.unique(a)
a
# 求和,直接用sum返回的是列的和
sum(a)
# 求a数组每一行的和
sum(a[:,0])
# 求所有数中的最大值
a.max()
# 求每一行的最大值
max(a[0])
# 求每一列的最大值
max(a[:,0])
# array的input和output
# 使用pickle序列化numpy array
import pickle
import numpy as np
x = np.arange(10)
x
f = open('x.pkl','wb')
# 写入
pickle.dump(x,f)
# 读取
f = open('x.pkl','rb')
pickle.load(f)
# 通过numpy的方式来进行序列化
np.save("one_array",x)
np.load("one_array.npy")
y = np.arange(20)
y
# 将多个array同时序列化到一个文件中
np.savez("two_array.npz",a=x,b=y)
c = np.load("two_array.npz")
c['a']
c['b']
注:array类型的数组相乘的方式是点乘,即元素位置对应相乘;转化为matrix形式才为矩阵的相乘;
序列化的含义是将对象的状态信息转换为可以存储或传输的形式的过程,即将数据存写在硬盘内;