NumPy高级索引

NumPy高级索引

NumPy高级索引

  可以通过将整数或切片对象指定为每个维度的索引来访问 NumPy 数组的内容。对数组的维度进行索引和切片称为基本索引。NumPy 还提供了一个复杂的“高级索引”系统,它为我们提供了访问数组元素的强大方法,除了指定整数和沿轴的切片之外,它还很灵活。

NumPy高级索引
NumPy高级索引

  高级索引始终返回数据的副本。与此相反,切片仅呈现视图。在Numpy中,有两种类型的高级索引 – Integer和Boolean。本文晓得博客为你介绍NumPy高级索引。

  推荐:如何在Python中创建表格

整数索引

  有助于根据数组的 N 维索引选择数组中的任意项,每个整数数组表示该维度的索引数。当索引由与目标 ndarray 的维度一样多的整数数组组成时,它就变得简单了。

NumPy高级索引整数索引
NumPy高级索引

  在以下示例中,从 ndarray 对象的每一行中选择指定列的一个元素。因此,行索引包含所有行号,列索引指定要选择的元素。

import numpy as np 

x = np.array([[1, 2], [3, 4], [5, 6]]) 
y = x[[0,1,2], [0,1,0]] 
print(y)

输出:
[1 4 5]

  选择包括来自第一个数组的 (0,0)、(1,1) 和 (2,0) 处的元素。在以下示例中,选择了放置在 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('Our array is:' )
print(x)
print('\n')

rows = np.array([[0,0],[3,3]])
cols = np.array([[0,2],[0,2]]) 
y = x[rows,cols] 

print('The corner elements of this array are:' )
print(y)

输出:
Our array is:
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]]


The corner elements of this array are:
[[ 0  2]
 [ 9 11]]

  结果选择是一个包含角元素的 ndarray 对象。高级索引和基本索引可以通过使用一个切片 (:) 或省略号 (…) 与索引数组进行组合,但是高级索引会导致复制,并且可能具有不同的内存布局。

  推荐:NumPy索引和切片

布尔数组索引

NumPy高级索引布尔数组索引
NumPy高级索引

  当结果对象是布尔运算(例如比较运算符)的结果时,使用这种类型的高级索引在此示例中,大于 5 的项目将作为布尔索引的结果返回。

import numpy as np 
x = np.array([[ 0,  1,  2],[ 3,  4,  5],[ 6,  7,  8],[ 9, 10, 11]]) 

print('Our array is:') 
print(x)
print('\n')  

print('The items greater than 5 are:')
print(x[x > 5])

输出:
Our array is:
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]]


The items greater than 5 are:
[ 6  7  8  9 10 11]

  在此示例中,使用 ——(补码运算符)省略了 NaN(非数字)元素。

布尔数组索引
NumPy高级索引
import numpy as np 
a = np.array([np.nan, 1,2,np.nan,3,4,5]) 
print(a[~np.isnan(a)])

输出:
[1. 2. 3. 4. 5.]

  以下示例显示如何从数组中过滤掉非复杂元素。

import numpy as np 
a = np.array([1, 2+6j, 5, 3.5+5j]) 
print(a[np.iscomplex(a)])

输出:
[2. +6.j 3.5+5.j]

  推荐:Python中使用文件I/O操作

总结

  以上是晓得博客为你介绍的NumPy高级索引的全部内容,希望对你的Python编程学习有所帮助,如有问题,欢迎留言探讨。

  推荐:NumPy教程

给文章评分

晓得博客,版权所有丨如未注明,均为原创
晓得博客 » NumPy高级索引

转载请保留链接:https://www.pythonthree.com/numpy-advanced-indexing/

Claude、Netflix、Midjourney、ChatGPT Plus、PS、Disney、Youtube、Office 365、多邻国Plus账号购买,ChatGPT API购买,优惠码XDBK,用户购买的时候输入优惠码可以打95折

Chatgpt-Plus注册购买共享账号
滚动至顶部