NumPy基础之花式索引

1 NumPy基础之花式索引

NumPy的花式索引(Fancy indexing)指ndarray数组使用整数数组进行索引。这的整数数组可以是python的列表等可迭代对象,也可以是NumPy数组。

花式索引,用整数数组的元素作为对应轴的索引,并且按数组元素顺序选取子集。

1.1 一个花式索引

一个花式索引,则整数数组元素为0轴的索引。

python 复制代码
>>> import numpy as np
>>> ar1=np.empty((8,5))
>>> for i in range(8):ar1[i]=i+1
>>> ar1
array([[1., 1., 1., 1., 1.],
       [2., 2., 2., 2., 2.],
       [3., 3., 3., 3., 3.],
       [4., 4., 4., 4., 4.],
       [5., 5., 5., 5., 5.],
       [6., 6., 6., 6., 6.],
       [7., 7., 7., 7., 7.],
       [8., 8., 8., 8., 8.]])
# 花式索引,使用整数数组作为轴的索引,并且按元素先后顺序返回对应轴数据
# 使用列表作为花式索引
# 返回0轴索引为5,2,0,3的元素,并且按元素先后顺序返回
>>> ar1[[5,2,0,3]]
array([[6., 6., 6., 6., 6.],
       [3., 3., 3., 3., 3.],
       [1., 1., 1., 1., 1.],
       [4., 4., 4., 4., 4.]])
# 负数作为索引,从最后一个开始向前索引为-1,-2,-3,依次类推
>>> ar1[[-3,-6,-1]]
array([[6., 6., 6., 6., 6.],
       [3., 3., 3., 3., 3.],
       [8., 8., 8., 8., 8.]])
# 使用array作为花式索引
>>> ar1[np.array((2,5,0))]
array([[3., 3., 3., 3., 3.],
       [6., 6., 6., 6., 6.],
       [1., 1., 1., 1., 1.]])

1.2 多个花式索引

多个花式索引,每个花式索引依次对应0轴、1轴...的索引,最终取0轴和1轴的交集部分。

python 复制代码
>>> import numpy as np
# ndarray.reshape()将ndarray转换为特定形状的ndarray
>>> ar2=np.arange(1,41).reshape((8,5))
>>> ar2
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10],
       [11, 12, 13, 14, 15],
       [16, 17, 18, 19, 20],
       [21, 22, 23, 24, 25],
       [26, 27, 28, 29, 30],
       [31, 32, 33, 34, 35],
       [36, 37, 38, 39, 40]])
# 多个花式索引,每个花式索引依次对应0轴、1轴...的索引
# [1,5,6,3]为0轴索引,[2,1,0,3]为1轴索引
# 最终取0轴和1轴的交集部分
>>> ar2[[1,5,6,3],[2,1,0,3]]
array([ 8, 27, 31, 19])
相关推荐
I'mFAN6 分钟前
QT_xcb 问题
人工智能·python·opencv·计算机视觉
独好紫罗兰20 分钟前
洛谷题单3-P5720 【深基4.例4】一尺之棰-python-流程图重构
开发语言·python·算法
爱吃奶酪的松鼠丶25 分钟前
.net GRPC服务搭建,跨进程调用。C#应用和Python应用之间的通信。
python·c#·.net
令狐少侠201136 分钟前
Ubuntu 24.04.2 LTS 系统安装python,创建虚拟环境
linux·python·ubuntu
洛阳泰山42 分钟前
PPTAgent:一款开源免费生成和评估幻灯片的项目
python·ai·llm·agent·ppt
zy_destiny1 小时前
【工业场景】用YOLOv12实现饮料类别识别
人工智能·python·深度学习·yolo·机器学习·计算机视觉·目标跟踪
Niuguangshuo1 小时前
Python设计模式:代理模式
开发语言·python·代理模式
www_pp_1 小时前
# 实时人脸识别系统:基于 OpenCV 和 Python 的实现
人工智能·python·opencv
带娃的IT创业者3 小时前
《Python实战进阶》No39:模型部署——TensorFlow Serving 与 ONNX
pytorch·python·tensorflow·持续部署
Bruce-li__3 小时前
深入理解Python asyncio:从入门到实战,掌握异步编程精髓
网络·数据库·python