繁体   English   中英

Python索引二维数组

[英]Python indexing 2D array

我该如何对2D数组的列进行索引。 例如-

array([[ 0,  1,  2,  3,  4],
   [ 5,  6,  7,  8,  9],
   [10, 11, 12, 13, 14],
   [15, 16, 17, 18, 19],
   [20, 21, 22, 23, 24],
   [25, 26, 27, 28, 29],
   [30, 31, 32, 33, 34],
   [35, 36, 37, 38, 39],
   [40, 41, 42, 43, 44],
   [45, 46, 47, 48, 49]])

这是一个二维数组。 我可以使用a[:,0]逐列访问它a[:,0]这将为我提供第一列。 但是,如果我想一次读取所有列并想要选择值,例如

[5]

[10][15]

[20][25][37]

那么它应该选择像

20

45, 21

46,22, 33

我知道这一定很容易。 但是我正在学习这些东西。

如果您想[5]给出20,则您必须从1开始计数。由于Python从0开始计数,因此现在就习惯于此:它只会引起头痛。

我不确定您想要哪种输出格式,因为numpy不支持参差不齐的数组,但是也许

>>> idx = np.array([5, 10, 15, 20, 25, 37])
>>> a.T.flat[idx-1]
array([20, 45, 21, 46, 22, 33])

够了吗? 在这里,我必须进行转置,将其视为平面数组,然后从索引中减去1以匹配您似乎在计数的方式。

我们可以使用列表而不是数组(但是我们需要做一个listcomp或其他事情来减去1。)例如:

>>> a.T.flat[[4, 9, 14, 19, 24, 36]]
array([20, 45, 21, 46, 22, 33])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM