Numpy的索引切片

索引

In [72]: arr = np.array([[[1,1,1],[2,2,2]],[[3,3,3],[4,4,4]]])                 

In [73]: arr
Out[73]:
array([[[1, 1, 1],
[2, 2, 2]], [[3, 3, 3],
[4, 4, 4]]]) In [74]: arr.ndim
Out[74]: 3 In [75]: arr.shape
Out[75]: (2, 2, 3) In [76]: arr[0] #返回降低一个维度的数组
Out[76]:
array([[1, 1, 1],
[2, 2, 2]])

In [77]: arr[0,0]         #返回一维数组
  Out[77]: array([1, 1, 1])

切片

In [78]: arr[:,:,:2]
Out[78]:
array([[[1, 1],
[2, 2]], [[3, 3],
[4, 4]]])

索引与切片结合

array([[[1, 1, 1],
[2, 2, 2]],
[[3, 3, 3],
[4, 4, 4]]])
In [79]: arr[0,1,:2]
Out[79]: array([2, 2])

Pandas的索引切片

一、Series的索引

In [8]: obj = pd.Series(np.arange(4),index=['a','b','c','d'])                  

In [9]: obj
Out[9]:
a 0
b 1
c 2
d 3
dtype: int64

1)使用index进行索引

In [10]: obj['b']
Out[10]: 1 In [11]: obj[1]
Out[11]: 1

2)切片

In [12]: obj['b':'d']    #包含尾部
Out[12]:
b 1
c 2
d 3
dtype: int64 In [13]: obj[1:3]
Out[13]:
b 1
c 2
dtype: int64

3)使用索引列表进行索引

In [14]: obj[['b','d']]
Out[14]:
b 1
d 3
dtype: int64 In [15]: obj[[1,3]]
Out[15]:
b 1
d 3
dtype: int64

二、DataFrame的索引

In [20]: obj = pd.DataFrame(np.arange(16).reshape((4,4)),index=['a','b','c','d'
...: ],columns=['a1','b2','c3','d4'])

In [21]: obj
Out[21]:
a1 b2 c3 d4
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
d 12 13 14 15

1)索引列

不可以obj[‘a’]了

In [32]: obj['b2']
Out[32]:
a 1
b 5
c 9
d 13
Name: b2, dtype: int64

2)行切片

In [36]: obj[:3]
Out[36]:
a1 b2 c3 d4
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11 In [37]: obj[obj['c3']>6] #根据布尔值数组选择数据
Out[37]:
a1 b2 c3 d4
c 8 9 10 11
d 12 13 14 15

3)索引列和行

In [38]: obj['a1']['c']
Out[38]: 8 In [39]: obj['a1'][:2]
Out[39]:
a 0
b 4
Name: a1, dtype: int64

4)使用loc和iloc选择数据

使用轴标签(loc)或整数标签(iloc)从DataFrame中选出数组的行和列的子集

整数标签(iloc):

In [55]: obj
Out[55]:
a1 b2 c3 d4
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
d 12 13 14 15 In [53]: obj.iloc[2,[2,0,1]] #变换列顺序
Out[53]:
c3 10
a1 8
b2 9
Name: c, dtype: int64 In [54]: obj.iloc[2] #索引行
Out[54]:
a1 8
b2 9
c3 10
d4 11
Name: c, dtype: int64

轴标签(loc):

In [57]: obj.loc['a',['b2','a1']]
Out[57]:
b2 1
a1 0
Name: a, dtype: int64 In [58]: obj.loc['a':'c',['b2','a1']] Out[58]:
b2 a1
a 1 0
b 5 4
c 9 8

numpy和pandas的基础索引切片的更多相关文章

  1. python中pandas数据分析基础3(数据索引、数据分组与分组运算、数据离散化、数据合并)

    //2019.07.19/20 python中pandas数据分析基础(数据重塑与轴向转化.数据分组与分组运算.离散化处理.多数据文件合并操作) 3.1 数据重塑与轴向转换1.层次化索引使得一个轴上拥 ...

  2. Numpy 笔记: 多维数组的切片(slicing)和索引(indexing)【转】

    目录 切片(slicing)操作 索引(indexing) 操作 最简单的情况 获取多个元素 切片和索引的同异 切片(slicing)操作 Numpy 中多维数组的切片操作与 Python 中 lis ...

  3. Python array,list,dataframe索引切片操作 2016年07月19日——智浪文档

    array,list,dataframe索引切片操作 2016年07月19日——智浪文档 list,一维,二维array,datafrme,loc.iloc.ix的简单探讨 Numpy数组的索引和切片 ...

  4. 《Python数据分析常用手册》一、NumPy和Pandas篇

    一.常用链接: 1.Python官网:https://www.python.org/ 2.各种库的whl离线安装包:http://www.lfd.uci.edu/~gohlke/pythonlibs/ ...

  5. 【转】python 中NumPy和Pandas工具包中的函数使用笔记(方便自己查找)

    二.常用库 1.NumPy NumPy是高性能科学计算和数据分析的基础包.部分功能如下: ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组. 用于对整组数据进行快速运算的标准 ...

  6. python 中NumPy和Pandas工具包中的函数使用笔记(方便自己查找)

    二.常用库 1.NumPy NumPy是高性能科学计算和数据分析的基础包.部分功能如下: ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组. 用于对整组数据进行快速运算的标准 ...

  7. NumPy和Pandas常用库

    NumPy和Pandas常用库 1.NumPy NumPy是高性能科学计算和数据分析的基础包.部分功能如下: ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组. 用于对整组数 ...

  8. 05-pandas索引切片读取数据缺失数据处理

    引入 numpy已经能够帮助我们处理数据,能够结合matplotlib解决我们数据分析的问题,那么pandas学习的目的在什么地方呢? numpy能够帮我们处理处理数值型数据,但是这还不够 很多时候, ...

  9. 常用numpy和pandas

    常用库 1.NumPy NumPy是高性能科学计算和数据分析的基础包.部分功能如下: ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组. 用于对整组数据进行快速运算的标准数学 ...

随机推荐

  1. python编程:从入门到实践----第六章>字典

    一.一个简单的字典:alien_0存储外星人的颜色和点数,使用print打印出来 alien_0 = {'color': 'green','points': 5} print(alien_0['col ...

  2. JavaScript—封装animte动画函数

    封装Animte 动画函数 虽然可能以后的开发中可能根本不需要自己写,Jquery 给我们封装好了,或者用CSS3的一些属性达到这样的效果可能更简单. 我比较喜欢底层的算法实现,万变不离其中,这个逻辑 ...

  3. nginx安装https证书

    安装证书 文件说明:1. 证书文件xxxxx.pem,包含两段内容,请不要删除任何一段内容.2. 如果是证书系统创建的CSR,还包含:证书私钥文件xxxx.key. ( 1 ) 在Nginx的安装目录 ...

  4. 图解:平衡二叉树,AVL树

    学习过了二叉查找树,想必大家有遇到一个问题.例如,将一个数组{1,2,3,4}依次插入树的时候,形成了图1的情况.有建立树与没建立树对于数据的增删查改已经没有了任何帮助,反而增添了维护的成本.而只有建 ...

  5. Go-map-字符串-指针-结构体

    Maps 什么是 map ? 类似Python中的字典数据类型,以k:v键值对的形式. map 是在 Go 中将值(value)与键(key)关联的内置类型.通过相应的键可以获取到值. 如何创建 ma ...

  6. drf序列化单改-整改-局部改-群改接口的实现

    整体单改 路由层.模型层.序列化层不需要做修改,只需要处理视图层:views.py """ 1) 单整体改,说明前台要提供修改的数据,那么数据就需要校验,校验的数据应该在 ...

  7. 有几个水洼(DFS)

    #include <iostream> #include<cstdio> using namespace std; #define maxn 105 char field[ma ...

  8. Python—构造单向链表数据类型

    # _*_ coding=utf-8 _*_ class Node: """ 创建链表的属性 """ def __init__(self, ...

  9. KMP算法复杂度证明

    引言 KMP算法应该是看了一次又一次,比赛的时候字符串不是我负责,所以学到的东西又还给网上的博客了-- 退役后再翻开看,看到模板,心想这不是\(O(n^2)\)的复杂度吗? 有两个循环也不能看做是\( ...

  10. JS - ES5与ES6面向对象编程

    1.面向对象 1.1 两大编程思想 1.2 面向过程编程 POP(Process-oriented programming) 1.3 面向对象编程 OOP (Object Oriented Progr ...