numpy模块

Posted on 2019-08-12 13:34  大白不白  阅读(837)  评论(0编辑  收藏  举报

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]]'''

 

Copyright © 2024 大白不白
Powered by .NET 9.0 on Kubernetes