Numpy是Python科学计算库的基础。Numpy的主要对象是一个多维度的、均匀的多维数组。Numpy提供了各种函数方法可以非常方便灵活的操作数组,熟练掌握数组的基本概念是使用数组这种数据结构的基本要求。
目录
1.定义ndarray类型
(1): a1 = np.array([[1,2,3],[2,3,4]])
(2):a1 = np.array([1,2,3],[4,5,6], dtype=np.float32) # 指定类型定义
(3):a1 = np.zeros((3,4)) # 指定维度定义0矩阵
(4):a1 = np.ones((3,4),dtype=np.float) # 指定数据类型和维度的单位矩阵
(5):a1 = np.empty((3,3)) # 指定维度的空矩阵
(6):a1 = np.arange(12).reshape((2,6)) # 产生0,12之间的指定维度
(7):a1 = np.linspace(1,10,6).reshape(3,2) # 产生1,10之间平均的6位数,并指定维度
2.打印ndarray类型的特征
定义一个矩阵: a1 = np.array([[1,2,3],[2,3,4]])
(1):a1.ndim # 打印几维
(2):a1.size # 打印矩阵有多少元素
(3):a1.shape # 矩阵的维度元祖形式
3.矩阵的运算
定义两个矩阵:
a1 = np.array([1,2,3,4])
a2 = np.array([5,6,7,8])
(1)相加,相乘,相减,相除:
a1+a2 = [6 8 10 12] # 对应位置相加 ,其余类比。
(2)平方
c = a1**2+a2**2
c = [26 40 58 80]
(3)sin,cos
np.sin(a1)
np.cos(a2)
(4):点乘,矩阵运算
c_dot = np.dot(a,b)# 矩阵乘法
a*b # 对应位置元素相乘
(5):求和
a = np.array([[1,3,5,6],[2,4,6,7]])
np.sum(a) = 34 # 所有数相加
np.sum(a,axis=1) = [15 19] # 指定每行相加
np.sum(a,axis=0) = [3 7 11 13] # 指定每列相加
(6):最大值,最小值,中值,平均值可以通过加参数axis来求每一行或每一列
np.min(a) = 1
np.max(a) = 7
np.mean(a) # 平均值
np.average(a) # 平均值
np.median(a) # 中值
(7):其他运算
np.argmin(a) # 最小值的索引
np.argmax(a) # 最大值的索引
np.cumsum(a) # 除了第一个其余的累加,类似斐波那契,但不相等。
np.diff(a) #前后两个的差值
np.sort(a) # 从小到大排序
np.tanspose(a) | a.T # 转置
np.clip(a,3,8) # 大于8的等于8小与3的等于3
4.矩阵的取值
a[1] # 根据下表取值
a[1][1]
a[0,:]# 第0行的所有列
a[0,1:3]# 第0行的指定列
循环打印所有的行
for row in a:
print(row)
循环打印所有的列
for column in a.T:
print(column)
将二维的每一个都打印出来
for item in a.flat:
kprint(item)
5.矩阵的合并、分割、拷贝
(1):合并
np.vstack((a,b)) | np.concatenate((a,b),axis=0)# 上下合并
np.hstack((a,b)) | np.concatenate((a,b),axis=0) # 左右合并
(2):分割
np.split(a,2,axis=1) # 均等分割
np.array_split(a,3,axis=0) # 不均等分割
np.vsplit(a,3)
np.hstack(a,2)
(3):拷贝
a = b # l两者相互影响,
b = a.copy() # 只拷贝值,不拷贝路径
6.矩阵元素的查询
###查找与赋值
x_data[x_data == '?'] = 0
###另一种查找
test=np.array([5,10,15,20])
print (test==15)
# 输出 array([False,False,Ture,False],dtype=bool)
###多重查找
test==15 & test==10
###转换数据类型
test.astype(np.float32)
p=test.astype(np.int)
7.保存与读取
numpy的强大之处有一个就是文件操作。
- 不仅能识别不同格式的文件: .csv .npy .txt .exl .bin等等
- 还能快速读取(特别有用)
- 最后还能快速导出npy
###二进制文件
a=np.array(range(12)).reshape([3,4])
a.tofile('filename.bin') #写
b=np.fromfile('filename.bin',dtype='') #读
###npy文件
np.save("filename.npy",a) #写并传给a
np.load("filename") #读
###另一种方法---用于npy有多个array
f=open('filename','wb')
np.save(f,a)
#注意此时,b有点像句柄,也有点像栈,会跳转到下一个array
b=np.load(f)
print(b)
b=np.load(f)
print(b)
###常用的txt文件
np.savetxt("filename.txt",a)
#用于处理一维或二维的简单数据
b=np.loadtxt("filename.txt")
###其他文件
np.load(...)