花式索引

本文详细介绍了Numpy中的花式索引概念及其使用方法。通过实例展示了如何利用整数列表或数组作为索引来选择特定顺序的数据子集,并解释了花式索引与切片的不同之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

花式索引是一个Numpy属于,指的是利用整数数组进行索引。有一个8*4数组。

 1 In [37]: arr = np.empty((8,4))
 2 
 3 In [38]: for i in range(8):
 4     ...:     arr[i] = i
 5 
 6 In [39]: arr
 7 Out[39]: 
 8 array([[ 0.,  0.,  0.,  0.],
 9        [ 1.,  1.,  1.,  1.],
10        [ 2.,  2.,  2.,  2.],
11        [ 3.,  3.,  3.,  3.],
12        [ 4.,  4.,  4.,  4.],
13        [ 5.,  5.,  5.,  5.],
14        [ 6.,  6.,  6.,  6.],
15        [ 7.,  7.,  7.,  7.]])

为了以特定顺序选取行子元素,只需传入一个用于指定顺序的整数列表或者ndarray即可。

 1 In [40]: arr[[4,3,0,6]]
 2 Out[40]: 
 3 array([[ 4.,  4.,  4.,  4.],
 4        [ 3.,  3.,  3.,  3.],
 5        [ 0.,  0.,  0.,  0.],
 6        [ 6.,  6.,  6.,  6.]])
 7 
 8 In [41]: arr[[-3,-5,-7]]
 9 Out[41]: 
10 array([[ 5.,  5.,  5.,  5.],
11        [ 3.,  3.,  3.,  3.],
12        [ 1.,  1.,  1.,  1.]])

一次传入多个索引数组会有一点特别。返回的是一个一维数组,其中的元素对应各个索引元素。

 1 In [42]: arr = np.arange(32).reshape((8,4))
 2 
 3 In [43]: arr
 4 Out[43]: 
 5 array([[ 0,  1,  2,  3],
 6        [ 4,  5,  6,  7],
 7        [ 8,  9, 10, 11],
 8        [12, 13, 14, 15],
 9        [16, 17, 18, 19],
10        [20, 21, 22, 23],
11        [24, 25, 26, 27],
12        [28, 29, 30, 31]])
13 
14 In [44]: arr[[1,5,7,2],[0,3,1,2]]
15 Out[44]: array([ 4, 23, 29, 10])

最终选出的是元素(1,0),(5,3),(7,1),(2,2)。

选取矩阵的行列子集应该是矩阵的形式。

1 In [48]: arr[[1,5,7,2]][:,[0,3,1,2]]
2 Out[48]: 
3 array([[ 4,  7,  5,  6],
4        [20, 23, 21, 22],
5        [28, 31, 29, 30],
6        [ 8, 11,  9, 10]])

花式索引跟切片不一样,是将数据复制到新数组中。

转载于:https://www.cnblogs.com/yu-1104/p/7879564.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值