如何逐列索引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]])
这是一个2D数组。我可以使用a[:,0]
以列方式访问它,这将为我提供第一列。但是,如果我想一次读取所有列并想要选择值,例如
[5]
[10][15]
[20][25][37]
那么它应该选择像
这样的值20
45, 21
46,22, 33
我知道这一定很容易。但我正在学习这些东西。
答案 0 :(得分:2)
如果你想[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])