Python: How to get values of an array at certain index positions?

后端 未结 5 1023
执念已碎
执念已碎 2020-12-06 05:04

I have a numpy array like this:

a = [0,88,26,3,48,85,65,16,97,83,91]

How can I get the values at certain index positions in ONE step? For e

相关标签:
5条回答
  • 2020-12-06 05:11

    You can use index arrays, simply pass your ind_pos as an index argument as below:

    a = np.array([0,88,26,3,48,85,65,16,97,83,91])
    ind_pos = np.array([1,5,7])
    
    print(a[ind_pos])
    # [88,85,16]
    

    Index arrays do not necessarily have to be numpy arrays, they can be also be lists or any sequence-like object (though not tuples).

    0 讨论(0)
  • 2020-12-06 05:26

    Just index using you ind_pos

    ind_pos = [1,5,7]
    print (a[ind_pos]) 
    [88 85 16]
    
    
    In [55]: a = [0,88,26,3,48,85,65,16,97,83,91]
    
    In [56]: import numpy as np
    
    In [57]: arr = np.array(a)
    
    In [58]: ind_pos = [1,5,7]
    
    In [59]: arr[ind_pos]
    Out[59]: array([88, 85, 16])
    
    0 讨论(0)
  • 2020-12-06 05:27

    The one liner "no imports" version

    a = [0,88,26,3,48,85,65,16,97,83,91]
    ind_pos = [1,5,7]
    [ a[i] for i in ind_pos ]
    
    0 讨论(0)
  • 2020-12-06 05:28

    Although you ask about numpy arrays, you can get the same behavior for regular Python lists by using operator.itemgetter.

    >>> from operator import itemgetter
    >>> a = [0,88,26,3,48,85,65,16,97,83,91]
    >>> ind_pos = [1, 5, 7]
    >>> print itemgetter(*ind_pos)(a)
    (88, 85, 16)
    
    0 讨论(0)
  • 2020-12-06 05:31

    your code would be

    a = [0,88,26,3,48,85,65,16,97,83,91]

    ind_pos = ind_pos = [a[1],a[5],a[7]]

    print ind_pos

    you get [88, 85, 16]

    0 讨论(0)
提交回复
热议问题