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)
>>> x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> y=np.sin(x)
>>> y
array([ 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)
# int32
ones函数
返回特定大小,以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
np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])
print(
'我们的数组是:'
)
print(a)
print (
'\n'
)
# 这会返回第二列元素的数组:
print (
'第二列的元素是:'
)
print(a[...,1])
print(
'\n'
)
# 现在我们从第二行切片所有元素:
print (
'第二行的元素是:'
)
print(a[1,...])
print(
'\n'
)
# 现在我们从第二列向后切片所有元素:
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]]
''
'