NumPy 教程 之 NumPy 高级索引 3

简介: NumPy高级索引包括整数数组索引、布尔索引及花式索引,能访问并操作数组中的任意元素。例如,使用整数数组索引可以从多维数组中选取特定位置的元素。对于一个4x3数组`x`,通过定义行索引`rows`和列索引`cols`为`[[0,0],[3,3]]`和`[[0,2],[0,2]]`,可以获取四个角的元素:`x[rows,cols]`,结果为`[[0 2] [9 11]]`。此外,结合切片与索引数组可进一步定制数据选择,如`a[1:3, 1:3]`或`a[...,1:]`等。

NumPy 教程 之 NumPy 高级索引 3

NumPy 高级索引

NumPy 比一般的 Python 序列提供更多的索引方式。

除了之前看到的用整数和切片的索引外,数组可以由整数数组索引、布尔索引及花式索引。

NumPy 中的高级索引指的是使用整数数组、布尔数组或者其他序列来访问数组的元素。相比于基本索引,高级索引可以访问到数组中的任意元素,并且可以用来对数组进行复杂的操作和修改。

整数数组索引

整数数组索引是指使用一个数组来访问另一个数组的元素。这个数组中的每个元素都是目标数组中某个维度上的索引值。

以下实例获取了 4X3 数组中的四个角的元素。 行索引是 [0,0] 和 [3,3],而列索引是 [0,2] 和 [0,2]。

实例

import numpy as np

x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]])
print ('我们的数组是:' )
print (x)
print ('\n')
rows = np.array([[0,0],[3,3]])
cols = np.array([[0,2],[0,2]])
y = x[rows,cols]
print ('这个数组的四个角元素是:')
print (y)

输出结果为:

我们的数组是:
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]

这个数组的四个角元素是:
[[ 0 2]
[ 9 11]]
返回的结果是包含每个角元素的 ndarray 对象。

可以借助切片 : 或 … 与索引数组组合。如下面例子:

实例

import numpy as np

a = np.array([[1,2,3], [4,5,6],[7,8,9]])
b = a[1:3, 1:3]
c = a[1:3,[1,2]]
d = a[...,1:]
print(b)
print(c)
print(d)

输出结果为:

[[5 6]
[8 9]]
[[5 6]
[8 9]]
[[2 3]
[5 6]
[8 9]]

目录
相关文章
|
8天前
|
Python
NumPy 教程 之 NumPy 统计函数 9
NumPy提供了多种统计函数,如计算数组中的最小值、最大值、百分位数、标准差及方差等。其中,标准差是一种衡量数据平均值分散程度的指标,它是方差的算术平方根。例如,对于数组[1,2,3,4],其标准差可通过计算各值与均值2.5的差的平方的平均数的平方根得出,结果为1.1180339887498949。示例代码如下: ```python import numpy as np print(np.std([1,2,3,4])) ``` 运行输出即为:1.1180339887498949。
102 50
|
12天前
|
Python
NumPy 教程 之 NumPy 算术函数 2
NumPy 教程 之 NumPy 算术函数 2
23 3
|
8天前
|
Python
NumPy 教程 之 NumPy 统计函数 10
NumPy统计函数,包括查找数组中的最小值、最大值、百分位数、标准差和方差等。方差表示样本值与平均值之差的平方的平均数,而标准差则是方差的平方根。例如,`np.var([1,2,3,4])` 的方差为 1.25。
93 48
|
3天前
|
存储 Python
NumPy 教程 之 NumPy 字节交换 1
本教程介绍了NumPy中的字节交换功能。字节顺序规定了多字节对象在内存中的存储规则,分为大端模式和小端模式。大端模式下,高字节存于低地址;而在小端模式下则相反。`numpy.ndarray.byteswap()`函数用于对ndarray中的每个元素进行字节序转换。示例展示了如何使用该函数实现字节交换,并提供了具体输出结果。
26 11
|
3天前
|
Python
NumPy 教程 之 NumPy 副本和视图 1
NumPy 副本和视图教程介绍:副本是对原始数据的完全拷贝,修改副本不会影响原始数据;而视图则是原始数据的引用,修改视图会影响原始数据。视图通常通过切片操作或 `ndarray.view()` 方法获得,副本则通过 `ndarray.copy()` 或 `deepCopy()` 函数生成。简单赋值不创建副本,而是共享原始数据。
25 9
|
2天前
|
Python
NumPy 教程 之 NumPy 副本和视图 3
副本是对原始数据的完全拷贝,修改副本不影响原始数据;而视图则是原始数据的别名,修改视图会影响原始数据。视图通常在切片操作或使用`view()`函数时产生,副本则在使用`copy()`函数或Python序列切片操作及`deepCopy()`函数时生成。示例展示了如何使用`view()`创建数组视图,并说明了其对原始数组形状的影响。
15 6
|
4天前
|
机器学习/深度学习 搜索推荐 算法
NumPy 教程 之 NumPy 排序、条件筛选函数 8
NumPy提供了多种排序方法,包括快速排序、归并排序及堆排序,各有不同的速度、最坏情况性能、工作空间和稳定性特点。此外,NumPy还提供了`numpy.extract()`函数,可以根据特定条件从数组中抽取元素。例如,在一个3x3数组中,通过定义条件选择偶数元素,并使用该函数提取这些元素。示例输出为:[0., 2., 4., 6., 8.]。
17 8
|
1天前
|
Python
NumPy 教程 之 NumPy 副本和视图 5
NumPy副本和视图教程介绍副本与视图的区别:副本是对原始数据的完全拷贝,修改副本不会影响原始数据;而视图则是对原始数据的引用,修改视图会影响原始数据。视图通常在切片操作或使用`view()`函数时产生;副本则在序列切片操作、调用`deepCopy()`或使用`copy()`函数时生成。示例展示了使用`copy()`函数创建副本,并验证了修改副本不会改变原始数据。
15 4
|
7天前
|
机器学习/深度学习 搜索推荐 算法
NumPy 教程 之 NumPy 排序、条件筛选函数 2
介绍NumPy` 中的排序方法与条件筛选函数。通过对比快速排序、归并排序及堆排序的速度、最坏情况性能、工作空间需求和稳定性,帮助读者选择合适的排序算法。此外,还深入讲解了 `numpy.argsort()` 的使用方法,并通过具体实例展示了如何利用该函数获取数组值从小到大的索引值,并据此重构原数组,使得其变为有序状态。对于学习 `NumPy` 排序功能来说,本教程提供了清晰且实用的指导。
16 7
|
4天前
|
机器学习/深度学习 搜索推荐 算法
NumPy 教程 之 NumPy 排序、条件筛选函数 5
NumPy中的排序方法及特性对比,包括快速排序、归并排序与堆排序的速度、最坏情况性能、工作空间及稳定性分析。并通过`numpy.argmax()`与`numpy.argmin()`函数演示了如何获取数组中最大值和最小值的索引,涵盖不同轴方向的操作,并提供了具体实例与输出结果,便于理解与实践。
14 4