# Python之numpy教程（五）：筛选、排序、集合函数、读取存入数据

9835人阅读 评论(0)

1.用布尔型数组进行筛选

import numpy as np
import numpy.random

arr = np.random.randn(100)

arr

array([-0.84570456, -2.21743968,  2.48971398,  1.57138679,  0.1645484 ,
-0.00618139,  0.55144822,  0.70877084,  0.83862826, -1.47160326,
-0.50499305, -1.52486585, -0.08403235, -0.48313017,  0.73283641,
0.59872726,  0.05932988, -1.28312722,  1.37144712, -0.52774171,
0.07949287, -1.25879195,  1.31256872,  0.31025061,  0.69700033,
-1.37906378, -0.57683916, -0.66151576, -0.6215851 , -0.96214685,
-1.97455008, -0.5725854 ,  1.54771953,  0.10434949,  1.18676295,
-1.3877092 ,  0.97231658, -2.13417302,  0.07059074,  0.40872163,
0.93872577, -0.62218374,  1.56875898,  1.50472097, -0.57749041,
-0.83776864, -1.82338058, -0.95860292,  0.59427145,  0.02685388,
-0.15122058, -0.28583306, -1.71298474,  0.01341369, -0.70516054,
0.86404614, -0.42701139, -0.25847577, -0.78713731,  0.41052537,
0.67961828, -1.18338025, -0.96648004, -2.22403128, -2.37807866,
1.65531665,  0.93905314,  1.36454143,  0.55153089,  0.44957141,
-0.78701216, -0.96467054,  0.53427677,  0.80850105,  1.87113103,
0.0755421 ,  1.33436598, -0.82354346,  0.7945044 , -0.07721165,
-0.07193151, -1.95614647,  0.13234494,  0.13054731, -2.10556319,
0.40520846,  1.69259913,  0.27619833,  0.21597633,  0.33204544,
2.60113181, -0.0873115 , -1.09422245, -0.84380081, -0.12965254,
1.8090488 ,  1.12106681, -0.02869555,  0.45762089, -0.37615294])

(arr > 0).sum() #正值的数量

51

2.anyall对布尔型数组非常有用，可以测试数组中是否存在一个或多个True

bools = np.array([False, False, True, False])
bools.any()

True
bools.all()

False

3.用sort函数进行排序
arr = np.random.randn(8)
arr

array([ 1.24989935,  0.26355977, -0.50860306, -1.54681062,  0.28423382,
1.37361039,  0.66252208,  0.96364101])
arr.sort()
arr

array([-1.54681062, -0.50860306,  0.26355977,  0.28423382,  0.66252208,
0.96364101,  1.24989935,  1.37361039])

4.sort函数也可以在某个轴上进行排序，0是列，1是行
arr = np.random.randn(5,3)
arr

array([[ 0.80755401, -0.54385431, -1.18145348],
[ 0.69971235, -0.45852225, -1.71633618],
[-0.45109238,  1.24928254,  0.23480012],
[-0.05216242, -0.35804026,  0.03701942],
[-0.42148283,  0.26845095, -0.45013768]])

arr.sort(1)
arr

array([[-1.18145348, -0.54385431,  0.80755401],
[-1.71633618, -0.45852225,  0.69971235],
[-0.45109238,  0.23480012,  1.24928254],
[-0.35804026, -0.05216242,  0.03701942],
[-0.45013768, -0.42148283,  0.26845095]])

5.利用排序选定特定位置

large_arr = np.random.randn(1000)
large_arr.sort()
large_arr[int(0.05*len(large_arr))] #5%分位数

-1.4970312664301417

6.用unique函数唯一化

names = np.array(['Bob','Joe','Will','Bob','Will','Joe','Joe'])
names

array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'],
dtype='<U4')
np.unique(names)

array(['Bob', 'Joe', 'Will'],
dtype='<U4')
ints = np.array([3,3,3,2,2,1,1,4,4])
np.unique(ints)输出：
array([1, 2, 3, 4])
7.用np.in1d函数测试一个数组中的值在另一个数组中的成员资格，返回一个布尔型数组：
values = np.array([6,0,0,3,2,5,6])
np.in1d(values,[2,3,6])

8.数组的集合函数部分总结如下：

9.数组的文件输入输出

arr = np.arange(10)
np.save('some_array',arr)

10.这时候你一定想知道你的数据保存在了哪里，以下办法可以查询当前工作路径

import os
os.getcwd()

11.加载数据：

np.load('some_array.npy')

array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

12.使用np.savez函数可以将多个数组保存到一个压缩文件中，将数组以关键词参数的形式传入即可：
np.savez('array_archive.npz',a=arr,b=arr)
arch['b']

array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

13.建立个array_ex.txt文件（默认工作目录），里面填充如下数据：

1,2,3,4
2,3,4,5
4,5,6,7
1,2,3,4

arr = np.loadtxt('array_ex.txt',delimiter=',')
arr

array([[ 1.,  2.,  3.,  4.],
[ 2.,  3.,  4.,  5.],
[ 4.,  5.,  6.,  7.],
[ 1.,  2.,  3.,  4.]])

0
0

个人资料
• 访问：150613次
• 积分：2133
• 等级：
• 排名：千里之外
• 原创：100篇
• 转载：1篇
• 译文：0篇
• 评论：3条
文章分类
阅读排行
最新评论