关闭

Python之numpy教程(五):筛选、排序、集合函数、读取存入数据

标签: pythonnumpy
9835人阅读 评论(0) 收藏 举报

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

import numpy as np
import numpy.random
arr = np.random.randn(100)
arr
输出100个随机数:

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)
如果文件路径末尾没有扩展名.npy,则该扩展名会被自动加上。


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 = np.load('array_archive.npz')
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

np.loadtxt函数读取它

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
查看评论

numpy中的数组条件筛选功能

在程序设计中,时常会遇到数据的唯一化、相同、相异信息的提取等工作,在格式化的向量存储矩阵中南,numpy能够提供比较不错的快速处理功能。 1,唯一化的实现: In [63]: data = np.array(['int','float','int'...
  • grey_csdn
  • grey_csdn
  • 2017-04-09 20:09
  • 3919

numpy 中的ndarray数组返回符合特定条件的索引方法

在numpy的ndarray类型中,似乎没有直接返回特定索引的方法,我只找到了where函数,但是where函数对于寻找某个特定值对应的索引很有用,对于返回一定区间内值的索引不是很有效,至少我没有弄明白应该如何操作。下面先说一下where函数的用法吧。 (1)where函数的使用场景: 例如现在我生...
  • wen123qiang
  • wen123qiang
  • 2015-10-17 15:40
  • 24808

python-用正则表达式筛选文本信息

【摘要】 本文主要介绍如何对多个文本进行读取,并采用正则表达式对其中的信息进行筛选,将筛选出来的信息存写到一个新文本。
  • bug_hero
  • bug_hero
  • 2017-10-28 18:37
  • 423

pandas按若干个列的组合条件筛选数据

还是用图说话 A文件: 比如,我想筛选出“设计井别”、“投产井别”、“目前井别”三列数据都相等的数据,结果如下: 当然,这里的筛选条件可以根据用户需要自由调整,代码如下: # -*- coding: utf-8 -*- """ Created on Wed Nov ...
  • destiny_python
  • destiny_python
  • 2017-11-30 13:27
  • 1305

python列表,字典和集合筛选数据方法

本文python版本使用的是python 3.5.2 经常会遇到如下需求: 过滤列表[5, 18, -9, 35, 20, -12 ...]中的负数 筛出字典{'Andrew':64, 'Jack':88, 'Leo':96 ...}中值高于80...
  • autista
  • autista
  • 2017-01-12 16:16
  • 6176

Python 爬虫4——使用正则表达式筛选内容

之前说过,使用urllib和urllib2,只是为了获取指定URL的html内容,而对内容进行解析和筛选,则需要借助python中的正则表达式来完成。 一、预备知识: 1.正则表达式简述:         什么是正则表达式?正则表达式就是可以匹配文本片段的...
  • linshuhe1
  • linshuhe1
  • 2016-08-04 18:57
  • 2794

Pandas DataFrames筛选数据

最近突然发现了pandas真实特别好用,实在需要好好学习下。貌似经过pd方法导入的数据都是DataFrame类型(二维)或者Series类型(一维)。今天在百度经验里看到了DataFrame的数据筛选,自己也尝试了下,顺便记录下来。 1.先加载os包,打开一个csv文件,读出其中内容 import ...
  • Jt1123
  • Jt1123
  • 2015-11-28 20:43
  • 27774

【Python学习系列二十二】pandas数据筛选和排序

在Pandas中通过.sort和.loc函数也可以实现这两 个功能。.sort函数可以实现对数据表的排序操作,.loc函数可以实现对数据表的筛选操作。 1、排序 sort函数主要包含6个参数:columns为要进行排序的列名称; ascending为排序的方式true为升序,False为降序,默认为...
  • fjssharpsword
  • fjssharpsword
  • 2017-07-04 10:43
  • 2087

Python编程技巧-根据条件从list dict set中筛选数据

从列表list中筛选数据from random import randint# 生成由十个范围在-10 ~ 10 的数组成的list l = [randint(-10, 10) for _ in range(10)] print(l) # 从列表l中滤出值大于等于0的值,返回给l2 l2 = fil...
  • suibianba554
  • suibianba554
  • 2017-11-08 22:53
  • 121

利用python进行数据分析笔记

pandas基础索引Series和DataFrame都是有索引的,索引的好处是快速定位,在涉及到两个Series或DataFrame时可以根据索引自动对齐,比如日期自动对齐,这样可以省去很多事。缺失值pd.isnull(obj) obj.isnull()将字典转成数据框,并赋予列名,索引DataFr...
  • suzyu12345
  • suzyu12345
  • 2016-02-24 22:24
  • 14183
    个人资料
    • 访问:150613次
    • 积分:2133
    • 等级:
    • 排名:千里之外
    • 原创:100篇
    • 转载:1篇
    • 译文:0篇
    • 评论:3条
    文章分类
    最新评论