如何在嵌套列表中选择"column"?



假设我有一个嵌套数组,如下所示:

 
   [
    ['2020-06-17 00:10:00'  2345    145   27245 ]
    ['2020-06-17 00:11:00'  8999    189   28999 ]
    ['2020-06-17 00:12:00'  8492    192   28492 ]
    ['2020-06-17 00:13:00'  1233    134   29334 ]
    ['2020-06-17 00:14:00'  3352    135   28234 ]
                                                 ]
                                                      

我如何选择特定的";列";如果:

A( 这是的列表

B( 它是numpy数组的numpy数组

并将其设置为替换为相同长度的1d列表/数组的值,例如[1000200300400]

C( 另外,我如何删除一个特定的列?

A(您可以通过执行以下操作来完成此操作。注意,我已经将其存储在变量list中,它与所示的数组不同。

alist = [[0, 1, 2, 3, 4, 5],
 [6, 7, 8, 9, 10, 11],
 [12, 13, 14, 15, 16, 17],
 [18, 19, 20, 21, 22, 23]]

如果你想得到,比如第三列,这是代码(注意:零索引适用(:

[row[2] for row in alist]

B( 对于NumPy来说,这更容易。我们将相同的列表转换为数组,但现在,我们只指定参数来获得第三列。

import numpy as np
npalist = np.array(alist)
npalist[:,2]

基本上,我只是导入了numpy,将2d列表转换为2d numpy数组。然后我输入了参数。如果第一个参数中有一个冒号,那么就有所有的行。如果第二个参数中有冒号,则表示所有列都存在。我们指定了一个特定的列(即第三列(,您可以在本地文件系统上运行此代码。

我们可以通过以下操作将第三列替换为数组[1000200300400]:

npalist[:,2] = [100,200,300,400]

尽管它与您的数组形状不同,但它是相同的逻辑。

C( 对于第三个问题,我将在NumPy上执行它。我们可以使用np.delete((函数(https://docs.scipy.org/doc/numpy-1.15.1/reference/generated/numpy.delete.html)。正如您所看到的,我们需要输入3个参数;阵列;行或列编号以及轴。稍后你会明白我的意思。如果我们想删除第三列,我们可以运行以下代码。

np.delete(npalist, 3, 1)

如果你不知道这意味着什么,那么就在这里。第一个参数显然是数组名称。第二个参数是行号或列号。因此,如果我们想要第三行,我们输入2(零索引(。如果我们想要第三列,我们仍然输入2。有什么收获?

这是最后一个参数。如果它是0,那么我们正在删除行。如果它是1,那么我们正在删除列。正如您所看到的,上面的代码片段在删除列时使用了轴1。

最新更新