Numpy索引详解(数值索引,列表索引,布尔索引)

数值索引

数值索引类似列表索引操作使用[],参数为下标,[0,len-1),高维数组的索引使用多个[]连用分别代表一维索引,二维索引...

import numpy as np
import torch

np.random.seed(1)
data1 = np.arange(5)
data2 = np.arange(15).reshape(3,5)
print(data1,end='\n\n')
print(data2,end='\n\n')

print(data1[1])
print(data2[1][2])

# [0 1 2 3 4]
# 
# [[ 0  1  2  3  4]
#  [ 5  6  7  8  9]
#  [10 11 12 13 14]]
# 
# 1
# 7

列表索引

列表索引在list中不支持,但ndarray可用

列表索引可以将多个索引合在一个列表中作为索引参数

格式为[dim1_index,dim2_index...]

同样也可以将列表换为ndarray或切片形式

import numpy as np
import torch

np.random.seed(1)
data1 = np.arange(5)
data2 = np.arange(15).reshape(3,5)
print(data1,end='\n\n')
print(data2,end='\n\n')

print(data1[[0,1,3]])
print(data2[[0,1],[1,3]])

print(data2[:,[1,2]])

# [0 1 2 3 4]
# 
# [[ 0  1  2  3  4]
#  [ 5  6  7  8  9]
#  [10 11 12 13 14]]
# 
# [0 1 3]
# [1 8]
# [[ 1  2]
#  [ 6  7]
#  [11 12]]

注意如果列表索引中若使用二维数组作为索引列表,则会分别取出该维度对应索引中的所有元素

import numpy as np
import torch

np.random.seed(1)
data1 = np.arange(5)
data2 = np.arange(15).reshape(3,5)
print(data2[[[0],[1]],[2,3]])
print(data2[[0,1],[2,3]])

# [[2 3]
#  [7 8]]
# [2 8]

这里可以看到[[0],[1]]是把该维度所有元素取出再进行下一维度的索引,而若只使用[0,1]则会与下一维度的索引列表进行两两匹配

布尔索引

布尔索引就是把索引列表换为布尔列表,该列表要与被索引的列表等长,值为True则对应位置保留。

import numpy as np
import torch

np.random.seed(1)
data1 = np.arange(5)
data2 = np.arange(15).reshape(3,5)
print(data1[[True,True,False,True,False]])
# [0 1 3]

同样我们可以设置条件筛选来返回布尔列表,然后重新进行索引

import numpy as np
import torch

np.random.seed(1)
data1 = np.arange(5)
data2 = np.arange(15).reshape(3,5)
print(data2,end='\n\n')

print(data2>5)

print(data2[data2 > 5])

# [[ 0  1  2  3  4]
#  [ 5  6  7  8  9]
#  [10 11 12 13 14]]
# 
# [[False False False False False]
#  [False  True  True  True  True]
#  [ True  True  True  True  True]]
# [ 6  7  8  9 10 11 12 13 14]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值