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]])
    
    
  • 相关阅读:
    BZOJ4245: [ONTAK2015]OR-XOR(前缀和)
    [HDU 4433]locker[DP]
    近期刷题的c语言总结。
    《BackboneJS框架的技巧及模式》(4)完结篇
    x+2y+3z=n的非负整数解数
    [置顶] 程序员看婚姻
    BNU29368:Check the Identity(栈)
    Python解决codeforces ---- 1
    带你走进EJB--MDB实现发送邮件(3)
    JIRA简介
  • 原文地址:https://www.cnblogs.com/coodyz/p/10970069.html
Copyright © 2011-2022 走看看