码迷,mamicode.com
首页 > 编程语言 > 详细

python numpy花哨索引

时间:2019-06-03 21:58:02      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:print   通过   res   第一个   style   多个   new   索引   dom   

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]])

python numpy花哨索引

标签:print   通过   res   第一个   style   多个   new   索引   dom   

原文地址:https://www.cnblogs.com/coodyz/p/10970069.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!