假设我有一个嵌套数组,如下所示:
[
['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。