Numpy中的数组花式索引

       先看一下接下来要总结到的所有的用法的IPython交互记录:

In [1]: importnumpy as np

 

In [2]: data =np.random.randn(7,8)

 

In [3]: data

Out[3]:

array([[0.33620879, -0.74760021,  0.21633351,-0.31951527, -0.3474147 ,

         0.594967  , 1.4092629 , -2.24377178],

       [ 0.25622154, -0.89852356, -0.22030082,-1.17275295,  0.56562225,

         0.99170359, -1.15174814, -1.29151643],

       [ 1.17473982, -0.62461077,  1.45672663, -1.11564103,  0.26553946,

         0.35517915,  0.19248287, -0.20412733],

       [ 0.00682497,  0.44310024, -0.19080634,  0.33418118, 0.25900891,

        -0.50168194, -0.58098831,  0.01596425],

       [ 0.17729272,  1.0473268 , 2.06460011,  0.8656533 ,-0.75786665,

        -0.76918499,  1.17370387, -0.75463024],

       [-0.58190942,  0.02386498, -0.47363576, -0.3190833 ,  0.24951237,

         1.16759181,  0.53037156, 0.5635678 ],

       [ 0.68403486, -0.66015504,  1.264285 , -1.24060441, -1.59612229,

        -0.18508092,  0.58758641, -0.08956482]])

 

In [4]: for i inrange(7):

   ...:    data[i] = i

   ...:

 

In [5]: data

Out[5]:

array([[ 0.,  0., 0.,  0.,  0., 0.,  0.,  0.],

       [ 1., 1.,  1.,  1., 1.,  1.,  1., 1.],

       [ 2., 2.,  2.,  2., 2.,  2.,  2., 2.],

       [ 3., 3.,  3.,  3., 3.,  3.,  3., 3.],

       [ 4., 4.,  4.,  4., 4.,  4.,  4., 4.],

       [ 5., 5.,  5.,  5., 5.,  5.,  5., 5.],

       [ 6., 6.,  6.,  6., 6.,  6.,  6., 6.]])

 

In [7]:data[[1,5,3]]

Out[7]:

array([[ 1.,  1., 1.,  1.,  1., 1.,  1.,  1.],

       [5.,  5., 5.,  5.,  5., 5.,  5.,  5.],

       [ 3., 3.,  3.,  3., 3.,  3.,  3., 3.]])

 

In [8]:data[[1,5,3],[2,3,4]]

Out[8]: array([1.,  5., 3.])

 

In [9]: arr1 =data[[1,2]]

 

In [10]: arr1

Out[10]:

array([[ 1.,  1., 1.,  1.,  1., 1.,  1.,  1.],

       [ 2., 2.,  2.,  2., 2.,  2.,  2., 2.]])

 

In [11]: arr1[0] =123

 

In [12]: arr1

Out[12]:

array([[123.,  123.,  123., 123.,  123.,  123., 123.,  123.],

       [  2.,    2.,    2.,   2.,    2.,    2.,   2.,    2.]])

 

In [13]: data

Out[13]:

array([[ 0.,  0., 0.,  0.,  0., 0.,  0.,  0.],

       [ 1., 1.,  1.,  1., 1.,  1.,  1., 1.],

       [ 2., 2.,  2.,  2., 2.,  2.,  2., 2.],

       [ 3., 3.,  3.,  3., 3.,  3.,  3., 3.],

       [ 4., 4.,  4.,  4., 4.,  4.,  4., 4.],

       [ 5., 5.,  5.,  5., 5.,  5.,  5., 5.],

       [ 6., 6.,  6.,  6., 6.,  6.,  6., 6.]])

 

       记录中有错误操作别删除,没有保留显示。从上面的运行记录中可以得出结论如下:

       1,花式索引的索引值是一个数组,对于二维被索引数据来说,索引值可以是一维或者二维。

       2,花式索引生成一个新的数组,不像切片,花式索引生成的是新的数据对象。

       3,花式索引的索引值为一维数组的时候,索引出数组相应的行,然后拼接成一个新的二维数组。

       4,花式索引的索引值为两个维度相同的一维数组凑成的二维向量时,以两个维度作为纵横坐标索引出单值后组合成新的一维向量。

       5,由于花式索引不同于切片,实现的是拷贝功能,生成的新数组改变不会影响元数据。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值