首页 > 其他分享 >无涯教程-NumPy - 高级索引

无涯教程-NumPy - 高级索引

时间:2023-10-15 16:31:43浏览次数:42  
标签:11 教程 索引 示例 无涯 np print array NumPy

有两种类型的高级索引- Integer索引 和 Boolean索引 。

整数索引

根据数组的N维索引选择数组中的任意项,每个整数数组代表该维度的索引数,当索引与目标ndarray的维数一样时,它变得很简单。

示例1

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]。

示例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对象 。

可以通过将一个切片(:)或省略号(…)与一个索引数组结合使用高级索引索引和基本索引。以下示例对行使用切片,对列使用高级索引。两者同时使用slice时,输出相同。但是高级索引会导致复制,并且可能具有不同的内存布局。

示例3

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'  

# slicing 
z = x[1:4,1:3] 

print 'After slicing, our array becomes:' 
print z 
print '\n'  

# 使用列的高级索引
y = x[1:4,[1,2]] 

print 'Slicing using advanced index for column:' 
print y

该程序的输出如下:

Our array is:
[[ 0  1  2] 
 [ 3  4  5] 
 [ 6  7  8]
 [ 9 10 11]]
 
After slicing, our array becomes:
[[ 4  5]
 [ 7  8]
 [10 11]]

Slicing using advanced index for column:
[[ 4  5]
 [ 7  8]
 [10 11]] 

布尔数组索引

当输出对象是布尔运算(如比较运算符)的输出时,将使用这种类型的高级索引。

示例1

在此示例中,作为布尔索引的输出,返回大于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'  

# 现在我们将打印大于 5 的元素
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] 

示例2

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

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.] 

示例3

下面的示例说明如何从数组中滤除非复杂元素。

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

在这里,输出如下-

[2.0+6.j  3.5+5.j] 

参考链接

https://www.learnfk.com/numpy/numpy-advanced-indexing.html

标签:11,教程,索引,示例,无涯,np,print,array,NumPy
From: https://blog.51cto.com/u_14033984/7872698

相关文章

  • 无涯教程-NumPy - 数组属性
    在本章中,无涯教程将讨论NumPy的各种数组属性。ndarray.shape此数组属性返回一个由数组维组成的元组。它也可以用来调整数组的大小。示例1importnumpyasnpa=np.array([[1,2,3],[4,5,6]])printa.shape输出如下-(2,3)示例2#这会调整ndarray的大小importnump......
  • 无涯教程-Matplotlib - 图像(Images)
    Matplotlib软件包中的图像模块提供了加载,重新缩放和显示图像所需的功能。Pillow库支持加载图像数据,Matplotlib本机仅支持PNG图像,如果本机读取失败,则下面显示的命令将退回到Pillow上。本示例中使用的图像是PNG文件,但请记住您对自己的数据的Pillow要求。imread()函数用于读取f......
  • C4D R25 CINEMA 4D 下载及安装教程
    软件介绍:CINEMA4D字面意思是4D电影,不过其本身就是3D的表现软件,由德国MaxonComputer开发,以极高的运算速度和强大的渲染插件著称,很多模块的功能在同类软件中代表科技进步的成果,并且在用其描绘的各类电影中表现突出,而随着其越来越成熟的技术受到越来越多的电影公司的重视,可以预见,其......
  • Kafka 入门教程
     Kafka是分布式发布-订阅消息系统,它最初由LinkedIn公司开发,使用Scala语言编写,之后成为Apache项目的一部分。在Kafka集群中,没有“中心主节点”的概念,集群中所有的服务器都是对等的,因此,可以在不做任何配置的更改的情况下实现服务器的的添加与删除,同样的消息的生产者和消费者......
  • python自带工具 venv 简明教程
    在Python中,代码可能依赖特定版本的包,如果代码a和代码b依赖包c的不同版本,这个时候就会导致a和b无法共存,也就是a和b存在冲突。用venv解决办法就是,创建2个不同的虚拟环境来分别存放a和b,这样就可以解决问题了。以这个问题为例,简单说明如何使用venv,需要特别说明的是:v......
  • 无涯教程-Matplotlib - 3D线框图(Wireframe)
    线框图采用值的网格并将其投影到指定的三维表面上,并使生成的三维形式非常容易可视化。plot_wireframe()函数用于此目的-frommpl_toolkitsimportmplot3dimportnumpyasnpimportmatplotlib.pyplotaspltdeff(x,y):returnnp.sin(np.sqrt(x**2+y**2)) x=......
  • 无涯教程-Matplotlib - 三维绘图(Dimensional)
    尽管最初设计Matplotlib时仅考虑了二维绘图,但在更高版本的Matplotlib的二维显示之上仍构建了一些三维绘图实用程序,以提供一组用于三维数据可视化的工具。通过导入Matplotlib软件包随附的mplot3d工具包启用三维图。可以通过将关键字projection='3d'传递给任何普通轴创建例程来......
  • 无涯教程-Matplotlib - 3D轮廓图(Contour)
    ax.contour3D()函数创建三维轮廓图,它要求所有输入数据采用二维规则形式,并在每个点处判断Z数据。在这里,显示三维正弦函数的三维轮廓图。frommpl_toolkitsimportmplot3dimportnumpyasnpimportmatplotlib.pyplotaspltdeff(x,y):returnnp.sin(np.sqrt(x**2+......
  • QT基础教程(文本绘制)
    (文章目录)前言本篇文章我们来讲解一下QT中使用QPainter来绘制文本的案例。一、普通文本绘制在Qt中,你可以使用QPainter类来绘制文本,包括普通文本、格式化文本和自定义文本效果。下面是使用QPainter绘制文本的基本方法和示例:1.绘制普通文本:使用QPainter的drawText......
  • 无涯教程-Matplotlib - 小提琴图(Violin)
    Violin图与箱形图相似,不同之处在于它们还显示了数据在不同值处的概率密度,在该箱形图上叠加了内核密度估计。像箱形图一样,Violin图用来表示跨不同"类别"的变量分布(或样本分布)的比较。Violin图比普通箱图更具信息性。实际上,虽然箱形图仅显示汇总统计信息,如均值/中位数和四分位数......