zoukankan      html  css  js  c++  java
  • 花式索引

    花式索引是一个Numpy属于,指的是利用整数数组进行索引。有一个8*4数组。

     1 In [37]: arr = np.empty((8,4))
     2 
     3 In [38]: for i in range(8):
     4     ...:     arr[i] = i
     5 
     6 In [39]: arr
     7 Out[39]: 
     8 array([[ 0.,  0.,  0.,  0.],
     9        [ 1.,  1.,  1.,  1.],
    10        [ 2.,  2.,  2.,  2.],
    11        [ 3.,  3.,  3.,  3.],
    12        [ 4.,  4.,  4.,  4.],
    13        [ 5.,  5.,  5.,  5.],
    14        [ 6.,  6.,  6.,  6.],
    15        [ 7.,  7.,  7.,  7.]])

    为了以特定顺序选取行子元素,只需传入一个用于指定顺序的整数列表或者ndarray即可。

     1 In [40]: arr[[4,3,0,6]]
     2 Out[40]: 
     3 array([[ 4.,  4.,  4.,  4.],
     4        [ 3.,  3.,  3.,  3.],
     5        [ 0.,  0.,  0.,  0.],
     6        [ 6.,  6.,  6.,  6.]])
     7 
     8 In [41]: arr[[-3,-5,-7]]
     9 Out[41]: 
    10 array([[ 5.,  5.,  5.,  5.],
    11        [ 3.,  3.,  3.,  3.],
    12        [ 1.,  1.,  1.,  1.]])

    一次传入多个索引数组会有一点特别。返回的是一个一维数组,其中的元素对应各个索引元素。

     1 In [42]: arr = np.arange(32).reshape((8,4))
     2 
     3 In [43]: arr
     4 Out[43]: 
     5 array([[ 0,  1,  2,  3],
     6        [ 4,  5,  6,  7],
     7        [ 8,  9, 10, 11],
     8        [12, 13, 14, 15],
     9        [16, 17, 18, 19],
    10        [20, 21, 22, 23],
    11        [24, 25, 26, 27],
    12        [28, 29, 30, 31]])
    13 
    14 In [44]: arr[[1,5,7,2],[0,3,1,2]]
    15 Out[44]: array([ 4, 23, 29, 10])

    最终选出的是元素(1,0),(5,3),(7,1),(2,2)。

    选取矩阵的行列子集应该是矩阵的形式。

    1 In [48]: arr[[1,5,7,2]][:,[0,3,1,2]]
    2 Out[48]: 
    3 array([[ 4,  7,  5,  6],
    4        [20, 23, 21, 22],
    5        [28, 31, 29, 30],
    6        [ 8, 11,  9, 10]])

    花式索引跟切片不一样,是将数据复制到新数组中。

  • 相关阅读:
    pythonchallenge(二)
    pythonchallenge(三)
    pythonchallenge(一)
    [译]Python编写虚拟解释器
    [译]用R语言做挖掘数据《七》
    [译]用R语言做挖掘数据《六》
    [译]用R语言做挖掘数据《五》
    编译安装php容易出现的问题以及解决办法
    关于nodejs模块安装后找不到包解决办法
    gulp的入门
  • 原文地址:https://www.cnblogs.com/yu-1104/p/7879564.html
Copyright © 2011-2022 走看看