zoukankan      html  css  js  c++  java
  • 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]])
    
    
  • 相关阅读:
    PHP开发者的MySQL错误
    shell编程技术和实例《linux0.01内核分析与操作系统设计》
    函数问题1 init_EMUX
    sizeof问题
    C语言读书心得
    《深入浅出MFC》读书感受
    计算机专业学习多年的苦恼
    一个完整的字符设备驱动程序导读
    学习书籍选择
    鼠标滑动、文本添加(倒计时)
  • 原文地址:https://www.cnblogs.com/coodyz/p/10970069.html
Copyright © 2011-2022 走看看