首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Numpy中的神奇索引

前言

学无止境,无止境学。坚持每天学点编程知识,坚持每天写点小文章,坚持每天进步一点点。大家好,我是张大鹏,喜欢学习和分享,希望能够通过此公众号,将自己学到的东西分享给大家,和大家一起交流,一起成长,一起进步。

乾坤未定,你我皆是黑马。大鹏一日同风起,扶摇直上九万里。宝剑锋从磨砺出,梅花香自苦寒来。不积跬步,无以至千里,不积小流无以成江海。

如果有多余的时间,就坚持学习吧,小时候学习改变命运,长大了学习丰富内涵,老了学习带来宁静。活到老,学到老,我能行!

概述

今天要给大家分享的是Numpy的神奇索引。在之前的文章中,我们已经掌握了Numpy的索引和切片,Numpy的布尔索引,应该已经感受到了Numpy在处理数组方面的强大之处。

而今天的主角神奇索引,你学会以后,相信会更惊叹于Numpy是如此的“神奇”!

那么,什么是神奇索引呢?

神奇索引本质上就是“通过数组对Numpy数组进行索引”。

没有错,我们对Numpy数组进行索引的时候,可以传入一个元素的二维数组,表示取Numpy数组中的某几行,也可以传入两个元素的二维数组,表示取Numpy数组中的某几个元素。

通过以上的描述,你应该能够感觉到,神奇索引主要是用来操作二维数组的。

准备数据

我们主要准备一个简单的二维数组:

import numpy as np

arr = np.array([[1,1,1],[2,2,2],[3,3,3]])

arr

结果如下:

array([[1, 1, 1],

[2, 2, 2],

[3, 3, 3]])

取数组某几行

比如,我们取数组的第1行和2行:

arr[[0,1]]

输出结果如下:

array([[1, 1, 1],

[2, 2, 2]])

比如我们去数组的第1行和第3行:

arr[[0,2]]

输出结果如下:

array([[1, 1, 1],

[3, 3, 3]])

神奇索引的优势

这里需要注意的是,虽然通过切片的方式我们也能够取出数组的某几行元素,但是切片是要遵循规律的。而申请索引不需要遵循规律,你想要去哪几行就填哪几行的索引就行。

神奇索引支持负数

神奇索引除了支持正常的整数索引以外,还支持负数索引,表示从后往前的第几行数据。

比如,我们取第一行数据和最后一行数据:

arr[[0,-1]]

输出结果如下:

array([[1, 1, 1],

[3, 3, 3]])

神奇索引取特定元素

之前已经介绍过,如果神奇索引传入的是两个元素的二维数组,则是取具体的元素,需要两个二维数组的元素个数相等。

比如,我们去第1行的第1个元素和最后一个行的最后一个元素:

import numpy as np

arr = np.arange(1,10).reshape((3,3))

arr[[0,-1],[0,-1]]

输出结果如下:

array([1, 9])

总结

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230109A0013A00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券