6

所以我有一个采用以下形式的大型 NumPy 数组:

data = [[2456447.64798471, 4, 15.717, 0.007, 5, 17.308, 0.019, 6, 13.965, 0.006],
        [2456447.6482855, 4, 15.768, 0.018, 5, 17.347, 0.024, 6, 14.001, 0.023],
        [2456447.648575, 4, 15.824, 0.02, 5, 17.383, 0.024, 6, 14.055, 0.023]]

我想创建一个如下所示的子数组:

[[4, 15.717, 5, 17.308, 6, 13.965], 
 [4, 15.768, 5, 17.347, 6, 14.001],
 [4, 15.824, 5, 17.383, 6, 14.055]]

基本上我想选择第一列,然后从第 4 列开始,我想选择每 3 列。我试图弄清楚如何用类似的方法解决这个问题,data[1:6:?]但我不明白如何逐步完成,只得到我想要的列。

此外,我需要它可以针对水平扩展的数组进行扩展。所以我不只是想对列值进行硬编码。

4

2 回答 2

7

你可以这样做:

>>> data[:, [1, 2, 4, 5, 7, 8]]
array([[  4.   ,  15.717,   5.   ,  17.308,   6.   ,  13.965],
       [  4.   ,  15.768,   5.   ,  17.347,   6.   ,  14.001],
       [  4.   ,  15.824,   5.   ,  17.383,   6.   ,  14.055]])
于 2013-06-28T17:16:43.247 回答
3

这样就可以解决问题,它可以水平和垂直缩放,而且简单且有效。

subArray = []
newRow = []
for row in data:
    for i in xrange(0,len(row)):
        if (i % 3 == 0):
            continue
        newRow.append(row[i])
    subArray.append(newRow)
    newRow = []
于 2013-06-28T17:05:54.363 回答