numpy是python的一个补充程序库,机器学习的框架,可以进行大量的维度数组和矩阵运算,对数组运算提供大量的数学函数库,内部解除了全局解释器锁GIL,运行效率高。
numpy中的数组的存储效率和输入输出性能均远远优于python中等价的基本数据结构,其能够提升的性能是与数组中的元素成比例的。
numpy使用内存映射文件以达到最优的数据读写性能,内存的大小限制了其对TB级的大文件的处理
1.load()和save()处理二进制文件(.npy)
2.loadtxt()和savetxt()处理正常的文本文件
numpy.save(file,arr,allow_pickle=true,fix_import = true)
file:文件名/文件路径
arr:要存储的数组
allow_pickle:布尔值,允许使用python pickle保存对象数组
fix_imports:为了方便python2读取python3保存的数据
例:
import numpy as np
x = np.arange(10)
array([0 1 2 3 4 5 6 7 8 9])
# 保存
np.save("save_x",x)
# 读取
np.load("save_x.npy")
将多个数组保存到一个文件中:numpy.savez(.npz)
例
>>> import numpy as np
#生成数据>>> x=np.arange(10)>>> xarray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])>>> y=np.sin(x)>>> yarray([ 0. , 0.84147098, 0.90929743, 0.14112001, -0.7568025 , -0.95892427, -0.2794155 , 0.6569866 , 0.98935825, 0.41211849]) #数据保存>>> np.save('save_xy',x,y) #读取保存的数据>>> npzfile=np.load('save_xy.npz')>>> npzfile #是一个对象,无法读取<numpy.lib.npyio.NpzFile object at 0x7f63ce4c8860> #按照组数默认的key进行访问>>> npzfile['arr_0']array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])>>> npzfile['arr_1']array([ 0. , 0.84147098, 0.90929743, 0.14112001, -0.7568025 , -0.95892427, -0.2794155 , 0.6569866 , 0.98935825, 0.41211849])常用属性:
import numpy as np
# 创建简单的列表a = [1,2,3,4,5,6]# 讲列表转换为数组b = np.array(a)# Numpy查看数组属性print(b.size)#6# 数组形状print(b.shape)# (6,)# 数组维度print(b.ndim)# 1# 数组元素类型print(b.dtype)# int32ones函数
返回特定大小,以1填充的新数组
zeros函数
返回特定大小,以0填充的新数组。
tolist()函数
tolost()函数用于把一个矩阵转化为list列表
np.unique()的用法
该函数是去除数组中的重复数字,并进行排序之后输出
np.argsort()的用法
argsort()函数返回的是数组值从小到达的索引值
>>> x = np.array([3, 1, 2])
>>> np.argsort(x) #按升序排列array([1, 2, 3])>>> np.argsort(-x) #按降序排列array([3, 2, 1])切片和索引:
import numpy as np
a = np.arange(10)print(a)# [0 1 2 3 4 5 6 7 8 9]s = slice(2,7,2)print(s)# slice(2, 7, 2)print(a[s])# [2 4 6]b = a[2:7:2]print(b)# [2 4 6]# 对单个元素进行切片b = a[5]print(b)# 5# 对始于索引的元素进行切片print(a[2:])# [2 3 4 5 6 7 8 9]# 对索引之间的元素进行切片print(a[2:5])# [2 3 4]# 二维数组# 最开始的数组import numpy as npa = np.array([[1,2,3],[3,4,5],[4,5,6]])print('我们的数组是:')print(a)print ('
')# 这会返回第二列元素的数组:print ('第二列的元素是:')print(a[...,1])print('
')# 现在我们从第二行切片所有元素:print ('第二行的元素是:')print(a[1,...])print( '
')# 现在我们从第二列向后切片所有元素:print ('第二列及其剩余元素是:')print(a[...,1:])'''我们的数组是:[[1 2 3] [3 4 5] [4 5 6]]第二列的元素是:[2 4 5]第二行的元素是:[3 4 5]第二列及其剩余元素是:[[2 3] [4 5] [5 6]]'''