python索引与切片表达_Python科学计算库Numpy之 切片与索引

NumPy - 切片和索引

ndarray对象的内容可以通过索引或切片来访问和修改,就像 Python 的内置容器对象一样。 如前所述,ndarray对象中的元素遵循基于零的索引。 有三种可用的索引方法类型: 字段访问,基本切片和高级索引。 基本切片是 Python 中基本切片概念到 n 维的扩展。 通过将start,stop和step参数提供给内置的slice函数来构造一个 Python slice对象。 此slice对象被传递给数组来提取数组的一部分。

NumPy - 高级索引

如果一个ndarray是非元组序列,数据类型为整数或布尔值的ndarray,或者至少一个元素为序列对象的元组,我们就能够用它来索引ndarray。 高级索引始终返回数据的副本。 与此相反,切片只提供了一个视图。 有两种类型的高级索引:整数和布尔值。

整数索引

这种机制有助于基于 N 维索引来获取数组中任意元素。 每个整数数组表示该维度的下标值。 当索引的元素个数就是目标ndarray的维度时,会变得相当直接。 以下示例获取了ndarray对象中每一行指定列的一个元素。 因此,行索引包含所有行号,列索引指定要选择的元素。

布尔索引

当结果对象是布尔运算(例如比较运算符)的结果时,将使用此类型的高级索引。

NumPy - 代码举例

import numpy as np

a1 = np.arange(10)

s1 = slice(2, 7, 2)

print(a1[s1])

print(a1[2:7:2]) # 切片参数(start:stop:step)

print(a1[3]) # 对单个元素进行切片

print(a1[3:]) # 对始于索引的元素进行切片

print(a1[3:6]) # 对索引之间的元素进行切片,默认step 1

a2 = np.array([[1, 2, 3], [3, 4, 5], [4, 5, 6], [6, 7, 8], [9, 10, 11]])

print(a2[1:])

print(a2[…, 1]) # 返回索引列的ndarray

print(a2[1, …]) # 返回索引行的ndarray

print(a2[1:, …]) # 返回第二行之后的行的所有列

print(a2[[0, 1, 2], [0, 1, 0]]) # 该结果包括数组中(0,0),(1,1)和(2,0)位置处的元素

rows = np.array([[0, 0], [3, 3]])

cols = np.array([[0, 2], [0, 2]])

print(a2[rows, cols]) # 包含每个角元素的ndarray对象

print(a2[1:4, [1, 2]]) # 组合使用

print(a2[a2 > 6]) # 切出大于6的元素

a3 = np.array([np.nan, 1, 2, np.nan, 3, 4, 5, 2 + 6j])

print(a3[~np.isnan(a3)]) # 使用了~(取补运算符)来过滤NaN

print(a3[np.iscomplex(a3)]) # 滤掉非复数元素

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值