索引和切片

Numpy数组的索引是一个内容丰富的主题,因为选取数据子集或单个元素的方式有很多。一维数组很简单,跟Python列表的功能差不多

 1 In [1]: import numpy as np
 2
 3 In [2]: arr = np.arange(10)
 4
 5 In [3]: arr
 6 Out[3]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
 7
 8 In [4]: arr[5:8]
 9 Out[4]: array([5, 6, 7])
10
11 In [5]: arr[5:8] = 12
12
13 In [6]: arr
14 Out[6]: array([ 0,  1,  2,  3,  4, 12, 12, 12,  8,  9])

如上所示,当讲一个标量值赋值给一个切片时,该值会自动传播到整个选区,与列表最重要的区别在于,数组切片是原始数组的视图。数据不会被复制,视图上的任何修改都会直接反应到原数组上(如果需要得到一份副本而非视图,就需要显示的进行复制操作,例如arr[5:8].copy())

对于高纬度数组,能做的事情更多。在一个二维数组中,各索引位置上的元素不在是标量而是一维数组。

1 In [7]: arr2 = np.array([[1,2,3],[4,5,6],[7,8,9]])
2
3 In [8]: arr2[1]
4 Out[8]: array([4, 5, 6])

也可以对各个元素进行递归访问,传入一个以逗号隔开的索引列表来选取单个元素。以下两种方式是等价的。

1 In [9]: arr2[1][2]
2 Out[9]: 6
3
4 In [10]: arr2[1,2]
5 Out[10]: 6

在多维数组中,如果省略了后面的索引,则返回的对象会是一个维度第一点的ndarray。

1 In [12]: arr3 = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
2
3 In [13]: arr3
4 Out[13]:
5 array([[[ 1,  2,  3],
6         [ 4,  5,  6]],
7
8        [[ 7,  8,  9],
9         [10, 11, 12]]])

arr3是一个2*3的数组

1 In [14]: arr3[0]
2 Out[14]:
3 array([[1, 2, 3],
4        [4, 5, 6]])
时间: 2024-07-31 14:50:07

索引和切片的相关文章

字符串的索引和切片

本文主要介绍:字符串的索引,切片及求字符串的长度 代码: #!/usr/bin/env python# author by lh# -*- coding:utf-8 -*- s='hello'ret=len(s)print retret1=s[0:3]print ret1print s[0]print s[1]print s[2]print s[3]print s[4] 运行结果:

python——入门系列(一)索引与切片

1.索引和切片:python当中数组的索引和其他语言一样,从0~n-1,使用索引的方法也是中括号,但是python中的切片的使用简化了代码 索引:取出数组s中第3个元素:x=s[2] 切片:用极少的代码将数组元素按需处理的一种方法.切片最少有1个参数,最多有3个参数,演示如下: 我们假设下面所用的数组声明为array=[2,3,4,5,6] 1个参数: array[1:]——从下标为1的元素选择到最后一个元素,返回 [4,5,6] array[:3]——从下标为0的元素选择到下标为2的元素,不包

乐哥学AI_Python(二):Numpy索引,切片,常用函数

Numpy的索引和切片 ndarray对象的内容可以通过索引和切片查看和修改. 索引:ndarray对象中的元素索引基于0开始 切片:对数组里某个片段区域的描述 数组的切片也可以理解为原始数组的局部视图,都是指向内存中的原始数组,所以不同于列表复制,切片上的修改都会直接反映到原始数组上. 索引切片的实例代码演示: Numpy常用函数的代码演示: Numpy的置换函数transpose.T和swapaxes演示与区别 T适用于一.二维数组 arr = np.arange(12).reshape(3

NumPy数组基本的索引和切片

对一维数组来说,NumPy数组的索引切片与Python列表的功能差不多: >>> arr array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> arr[3] 3 >>> arr[2:6] array([2, 3, 4, 5]) >>> arr[3:] array([3, 4, 5, 6, 7, 8, 9]) 但是,特别注意的是,如果要将一个标量值赋值给一个切片,这个修改会直接反映到源数组上(即使你已经新建

python 字符串,字符串运算,比较,索引,切片等

一:字符串: str作用:用来记录文本信息,字面值表示方法:用引号括起来的部分都是字符串. '' 单引号"" 双引号''' 三引号""" 三双引号单引号和双引号的区别:单引号的双引号不算结束符双引号内的单引号不算结束符三引号字符串的作用:三引号内可以包含单引号和双引号三引号字符串重的换行会自动转换为换行符'\n' 二:用转义序列代表特殊字符字符串字面值中用子字符反斜杠\后跟一些字符代表特殊的一个字符如: \' 代表一个单引号\" 代表双引号\n

索引与切片运算符重载

索引和切片运算符的重载 方法名 运算符和表达式 说明 __getitem__(self, i) x = self[i] 索引/切片取值 __setitem__(self, i, val) self[i] = val 索引/切片赋值 __delitem__(self, i) del self[i] 删除索引/切片 作用: 让自定义的类的对象能够支持索引和切片操作 class MyList: def __init__(self, iterable=()): self.data = list(iter

NumPy学习(索引和切片,合并,分割,copy与deep copy)

NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片 合并 分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程序示例 import numpy as np #索引与切片 array=np.arange(3,15) print(array) print(array[3])#数组下标为3的元素 print('\n') print(array[1:3])#取从下标1到下标3,不包括下标3 print(array[

Numpy学习二:数组的索引与切片

1.一维数组索引与切片#创建一维数组arr1d = np.arange(10)print(arr1d) 结果:[0 1 2 3 4 5 6 7 8 9] #数组的索引从0开始,通过索引获取第三个元素arr1d[2] 结果:2 #切片,左闭右开区间,从索引3开始,直到索引7结束 arr1d[3:8] 结果:array([3, 4, 5, 6, 7]) #数组脚标由右往左是从-1开始,每向左一位脚标数字减1,获取最后一个元素arr1d[-1] #等价arr1d[9] 结果:9 #将标量赋值给切片,会

numpy数组的索引和切片

numpy数组的索引和切片 基本切片操作 >>> import numpy as np >>> arr=np.arange(10) >>> arr array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> arr[5] 5 >>> arr[5:8] array([5, 6, 7]) 切片赋值操作 1.切片赋一个值对应原来数组中的值也会变 >>> arr[5:8]=12 &g

Python--时间序列.s(索引、切片、重采样)

时间序列    索引 / 切片 / 重采样 时间序列  ?? 索引 # 示例数据 import numpy as np import pandas as pd import datetime times = pd.date_range('2019-1-1',periods=10,freq='MS') ps = pd.Series(np.random.rand(len(times)),index=times) #-----输出-----# 2019-01-01 0.374180 2019-02-0