2.7 花哨的索引

本文介绍了在Python中如何利用花哨索引从二维数组中选择随机不重复的元素,以及如何通过这种方式修改数组的值。具体展示了在二维正态分布的点组成的100行2列数组中,如何选取并操作特定的20个点。
摘要由CSDN通过智能技术生成

2.7 花哨的索引

 

import numpy as np
rand = np.random.RandomState(42)
x = rand.randint(100, size=10)
print(x)
[51 92 14 71 60 20 82 86 74 74]

 

[x[3], x[7], x[2]]
[71, 86, 14]

 

ind = [3, 7, 2]
x[ind]
array([71, 86, 14])

利用花哨的索引,结果的形状与索引数组一致,而不是与被索引数组的形状一致。

 

ind = np.array([[3, 7], [4, 5]])
x[ind]
array([[71, 86],
       [60, 20]])

 

X = np.arange(12).reshape((3, 4))
X
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

二维索引,对应的是行和列的索引,如果索引的维度不同,会广播后再索引。

 

row = np.array([0, 1, 2])
col = np.array([2, 1, 3])
X[row, col]
array([ 2,  5, 11])

 

X[row[:, np.newaxis], col]  # 索引是3X1和1x3,先广播再索引
array([[ 2,  1,  3],
       [ 6,  5,  7],
       [10,  9, 11]])

 

row[:, np.newaxis], col
(array([[0],
        [1],
        [2]]), array([2, 1, 3]))

 

X[2, [2, 0, 1]]  # 组合使用,与简单索引
array([10,  8,  9])

 

X[1:, [2, 0, 1]]  # 组合使用,与切片
array([[ 6,  4,  5],
       [10,  8,  9]])

 

mask = np.array([1, 0, 1, 0], dtype=bool)
X[row[:, np.newaxis], mask]  # 组合使用,与掩码
array([[ 0,  2],
       [ 4,  6],
       [ 8, 10]])

示例:选择随机点

花哨的索引的常见用途是从一个矩阵中选择行的子集,如有一个 N×D

的矩阵,表示在 D

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值