Python-numpy-高级索引

这篇博客探讨了在numpy的ndarray中进行高级索引的方法,包括整数索引和布尔索引。在整数索引中,行和列索引可以结合使用,甚至可以结合切片操作。布尔索引则利用布尔值来选取特定元素,例如与NaN相关的处理。

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

在做张量运算的时候经常会用到索引,这里记录一下numpy包中的ndarray中的高级索引
1 整数索引
对于矩阵,有行索引,列索引

import numpy as np

a = np.array([[1,2,3], [4,5,6],[7,8,9]])
b = a[[0,2],[0,2]]
c = a[1,2]
print(a)
print(b)
print(c)
#输出
[[1 2 3]
 [4 5 6]
 [7 8 9]]
[1 9]
6

注意: 对多个数据进行索引时,将行索引放一起,列索引放一起.

import numpy as np

a = np.array([[1,2,3], [4,5,6],[7,8,9]])
rows = np.array([[0,0],[2,2]])
cols = np.array([[0,2],[0,2]])
b = a[rows,cols]
print(b)
#输出
[[1 3]
 [7 9]]

有点意思啊,这个格式返回的还是一个ndarray.

还可以借助切片:或…与索引数组组合.如下面例子

import numpy as np

a = np.array([[1,2,3], [4,5,6],[7,8,9]])
b = a[1:3, 1:3]
c = a[1:3,[1,2]]
d = a[...,1:]
print(b)
print(c)
print(d)
#输出
[[5 6]
 [8 9]]
[[5 6]
 [8 9]]
[[2 3]
 [5 6]
 [8 9]]

2 布尔索引

import numpy as np

a = np.array([[1,2,3], [4,5,6],[7,8,9]])
b = a[a > 4]
print(b)
#输出
 [5 6 7 8 9]

第二个例子:

import numpy as np

a = np.array([np.nan,  1,2,np.nan,3,4,5])
b = a[~np.isnan(a)]
print(b)
#输出
[ 1.  2.  3.  4.  5.]

关于NaN,以及与None的区别我在另一篇博客中有写.
这里用了取补符号 ~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值