Numpy教材知识(3)

数组的读 / 写

NumPy提供了多种文件操作函数存取数组内容。文件存取的格式分为两类;二造制和文本。

1. 读/写二进制文件
二进制格式的文件又分为NumPy专用的格式化一进制类刑和无格式类型,NumPy中读/写二进制文件的方法有以下两种。

执行代码说明
NumPy. load(”文件名,npy”)从二进制的文件中读取数据
NumPy. save(”文件名[.npy]”,arr)以二进制的格式保存数据

它们会自动处理元素类型和shape等信息,使用它们读/写数组就非堂方便,但是np.save输出的文件很难用其他语言编写的程序读入。

例题1:(数组的读/写)

a = np.arange(1, 13).reshape(3,4)
print(a)
np. save('arr. npy', a) 
c = np. load( 'arr.npy')
print(c)

例题2:(多个数组保存)

a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.arange(0, 1.0, 0.1)
C = np.sin(b)                   #长度为10
print(C)
np.savez('result.npz', a, b, sin_array =C) 
r = np.load('result.npz')
print(r['arr_0'])                 #数组a

2.读/写文本文件
NumPy中读/写文本文件的主要方法有以下几种。

执行代码说明
NumPy, loadtxt("../tmp/arr.txt",delimiter=", ")把文件加载到一个二维数组中
NumPy. savetxt("../tmp/arr.txt", arr, fmt="%d", delimiter=", ")将数组写到某种分隔符隔开的文本文件中
NumPy. genfromtxt("../tmp/arr.txt",delimiter=",”)结构化数组和缺失数据

例题3:(读/写文本文件)

a = np.arange(0, 12, 0.5).reshape(4, -1)
np.savetxt("D:/VC/CSDN/al-out.txt", a)
#默认按照’.18e'格式保存数值
np.savetxt("D:/VC/CSDN/a2-out.txt", a, fmt="%d", delimiter=",")
#改为保存为整数,以逗号分隔
array = np.loadtxt("D:/VC/CSDN/a2-out.txt", delimiter=",")
#读入的时候也需要指定逗号分隔
print('array:', array)

3.读取CSV文件

读取CSV文件格式:
comments ='#',delimiter =None,converters -None, skiprows=0, loadtxt(fname, dtype=,
usecols = None, unpack = False, ndmin = 0, encoding = 'bytes')

主要参数及其说明
参数说明
fnamestr,读取的CSV文件名
delimiterstr,数据的分隔符
usecolstuple(元组),执行加载数据文件中的哪些列
unpackbool,是否将加载的数据拆分为多个组,True表示拆,False表示不拆
skiprowsint,跳过多少行,一般用于跳过前几行的描述性文字
encodingbytes,编码格式

Numpy中的数据统计与分析

1.排序

Numpy的常用排序方式
直接排序:sort函数
间接排序:argsort函数
lexsort函数

(1)sort函数是最常用的排序方法,函数调用改变原始数组,无返回值。
格式:numpy. sort(a, axis, kind, order)

sort函数主要参数及其说明
参数说明
a要排序的数组
axis

使得sort函数可以沿着指定轴对数据集进行排序

axis=1为沿横轴排序;
axis=0为沿纵轴排序;

axis=None, 将数组平坦化之后进行排序。

kind排序算法,默认为 quicksort
order如果数组包含字段,则是要排序的字段

例题4:(使用sort函数进行排序)

arr = np.array([7, 9, 5,2, 9,4, 3, 1,4,3])
print('原数组:', arr)
arr.sort()
print('排序后:',arr)

例题5:(带轴向参数的sort排序)

arr = np.array([[4, 2, 9,5],[6,4,8,3],[1,6,2,4]])
print('原数组:\n', arr)
arr.sort(axis =1) #沿横向排序
print('排序后:',arr)

(2)使用argsort和lexsort函数,可以在给定一个或多个键时,得到一个由整数构成的
索引数组,索引值表示数据在新的序列中的位置。

例题6:(argsort函数)

arr = np.array([7, 9, 5, 2, 9, 4, 3, 1, 4, 3])
print('原数组:', arr)
print('排序后:',arr.argsort())
#返回值为数组排序后的下标排列
print('显示较大的5个数:',arr[arr.argsort()][-5:])

例题7:(lexsort函数)

 a= [1,5, 7,2,3,-2,4]
b=[9,5,2,0,6,8,7]
ind = np.lexsort((b,a))
print('ind:',ind)
tmp = [(a[i],b[i])for i in ind]
print('tmp:',tmp)

2.重复数据与去重

(1)在数据统计分析中,需要提前将重复数据剔除。在NumPy中,可以通过unique数找到数组中的唯一值并返回已排序的结果,其中的参数return_counts设置为True时可以返回每个取值出现的次数。

例题8:(数组内数据去重)

names = np.array(['红色','蓝色','蓝色','白色','红色','红色'])
print('原数组:',names)
print('去重后的数组:',np.unique(names))

(2)统计分析中有时需要把一个数据重复若干次,在NumPy中主要使用 tile和repeat函数实现数据重复。

函数格式说明
tilenumpy. tile(A, reps)

A表示要重复的数组;

reps表示重复次数。

repeatnumpy. repeat(a, reps, axis = None)

a是需要重复的数组元素;

reps是重复次数;

axis指定沿着哪个轴进行重复:axis=0表示按行进行元素重复,axis=1表示按列进行元素重复。

例题9:(使用title函数实现数据重复)

arr=np.arange(5)
print('原数组:',arr)
wy=np.tile(arr,3)
print('重复数据处理:\n',wy)

例题10:(使用repeat函数实现数据重复)

arr = np.arange(5)
print('原数组:',arr)
wy = np.tile(arr, 3)
print('重复数据处理:\n',wy)
arr2 = np.array([[1, 2,3],[4, 5,6]])
print('重复数据处理:\n',arr2.repeat(2,axis=0))

常用统计函数

NumPy中提供了很多用于统计分析的函数,常见的有sum、mean、std、var、min和max等。几乎所有的统计函数在针对二维数组时都需要注意轴的概念。当axis参数为0时,表示沿着纵轴进行计算;当axis=1时表示沿横轴进行计算。

例题11:(常用统计函数示例)

arr = np.arange(20).reshape(4,5)
print('创建的数组:\n',arr)
print('数组的和:',np.sum(arr))
print('数组纵轴的和:',np.sum(arr, axis=0))
print('数组横轴的和:',np.sum(arr,axis=1))
print('数组的均值:',np.mean(arr))
print('数组横轴的均值:',np.mean(arr, axis=1))
print('数组的标准差:',np.std(arr))
print('数组横轴的标准差:',np.std(arr, axis=1))

  • 36
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值