• python numpy花哨索引


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

    获取元素:

    [x[3], x[7], x[2]]
    [71, 86, 14]
    #  通过传递索引的单个列表或数组来获取元素
    ind = [3, 7, 4] x[ind]
    array([71, 60, 86])

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

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

    花哨的索引对多个维度也适用。

    花哨的索引返回的值反映的是广播后的索引数组的形状,而不是被索引数组的形状。

    In [12]: X = np.arange(12).reshape((3, 4))
    
    In [13]: X
    Out[13]:
    array([[ 0,  1,  2,  3],
           [ 4,  5,  6,  7],
           [ 8,  9, 10, 11]])
    
    In [14]: row = np.array([0, 1, 2])
    
    In [15]: col = np.array([2, 1, 3])
    
    In [16]: X[row, col] 
    Out[16]: array([ 2,  5, 11]) #  第一个值是X[0, 2], 第二个值是X[1, 1]
    
    In [17]: X[row[:, np.newaxis], col]
    Out[17]:
    array([[ 2,  1,  3],
           [ 6,  5,  7],
           [10,  9, 11]])
    
    In [18]: row[:, np.newaxis] * col
    Out[18]:
    array([[0, 0, 0],
           [2, 1, 3],
           [4, 2, 6]])
    
    In [19]: row * col
    Out[19]: array([0, 1, 6])
    
    In [20]: X[np.array([0, 1, 2]), np.array([2, 1, 3])]
    Out[20]: array([ 2,  5, 11])
    
    In [22]: X[np.array([0, 1, 2])[:, np.newaxis], np.array([2, 1, 3])]
    Out[22]:
    array([[ 2,  1,  3],
           [ 6,  5,  7],
           [10,  9, 11]])
    
    In [23]: np.array([0, 1, 2])[:, np.newaxis]
    Out[23]:
    array([[0],
           [1],
           [2]])
    
    
  • 相关阅读:
    .NET Core 服务调用 RPC
    从Docker 到 Kubernatetes 的跃迁之路
    同步异步-多线程梳理
    Net的微服务选型之路
    Visual Studio 2019安装SSIS
    HL7协议的基本语法
    vue学习笔记
    开发常用的部分sql语句总结
    VSPD虚拟串口来调试通信接口程序
    SSRS报表工具之合并行数据
  • 原文地址:https://www.cnblogs.com/coodyz/p/10970069.html
Copyright © 2020-2023  润新知