numpy_learning6(高级索引)

一维高级索引

import numpy as np
rand = np.random.RandomState(42)  # 随机种子
x = rand.randint(100,size=10)
print(x)

print([x[3],x[7],x[2]])  # 用一个数组承接多个索引

print(x[[3,7,2]])  # 直接用一个数组去索引多个值

  索引出来的数组的形状与索引数组一致

ind = np.array([[1,2],
                [3,4]])
print(x[ind])

 多维度高级索引

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

row = np.array([0,1,2])
col = np.array([1,2,1])
print(X[row,col])
'''
[1 6 9]
'''

X[row[:,np.newaxis],col]  # 索引结合广播
'''
[[ 1,  2,  1],
 [ 5,  6,  5],
 [ 9, 10,  9]]
'''

X[row,col[:,np.newaxis]]
'''
[[ 1,  5,  9],
 [ 2,  6, 10],
 [ 1,  5,  9]]
'''

 组合索引

X[2,[2,0,1]]  # 广播
'''
[10,  8,  9]
'''

X[1:,[2,0,1]]  # 切片加索引&广播
'''
[[ 6,  4,  5],
 [10,  8,  9]]
'''

mask = np.array([1,0,1,0],dtype=bool)
X[row[:,np.newaxis],mask]  #  广播&掩码&索引
'''
[[ 0,  2],
 [ 4,  6],
 [ 8, 10]]
'''

利用组合索引修改值

x = np.arange(10)
i = np.array([2,1,8,4])
x[i] = 99
print(x)
'''
[ 0 99 99  3 99  5  6  7 99  9]
'''

x[i] -= 10
print(x)
'''
[ 0 89 89  3 89  5  6  7 89  9]
'''

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值