如何从2d数组中的每一秒[I][1]元素中减去

  • 本文关键字:一秒 元素 2d 数组 python
  • 更新时间 :
  • 英文 :


这是我的2d数组:

[['P1', 27], ['P2', 44], ['P3', 65], ['P4', 51], ['P5', 31], ['P6', 18], ['P7', 33]]

我创建了一个循环,将每个适当的标签附加到这个2d数组中的相应值上。在循环结束时,我想用不同的数字减去每个值。

例如:如果我想用5 减去这些值

[['P1', 22], ['P2', 39], ['P3', 60], ['P4', 46], ['P5', 26], ['P6', 13], ['P7', 28]]

当数组同时具有str类型和int时,我该如何做到这一点?

这是一项简单的列表理解工作:

>>> L = [['P1', 27], ['P2', 44], ['P3', 65], ['P4', 51], ['P5', 31], ['P6', 18], ['P7', 33]]
>>> [[s, n - 5] for s, n in L]
[['P1', 22], ['P2', 39], ['P3', 60], ['P4', 46], ['P5', 26], ['P6', 13], ['P7', 28]]

请注意,使用理解创建一个列表,原始数据将保持不变。如果你想在原地修改原始文件,最好使用for循环:

>>> for sublist in L:
...     sublist[1] -= 5
... 
>>> L
[['P1', 22], ['P2', 39], ['P3', 60], ['P4', 46], ['P5', 26], ['P6', 13], ['P7', 28]]

作为一个例子,这是有效的:

Array1 = [['P1', 27], ['P2', 44], ['P3', 65], ['P4', 51], ['P5', 31], ['P6', 18], ['P7', 33]]
Array2 = [[i[0],i[1]-5] for i in Array1]
print(Array2)

好吧,这只是另一个答案的措辞略有不同:(

对于较大的列表,使用numpy,如下所示:

import numpy as np
data = [['P1', 27], ['P2', 44], ['P3', 65], ['P4', 51], ['P5', 31], ['P6', 18], ['P7', 33]]
a = np.array(data, dtype=object)
a[:, 1] = a[:, 1] - 5

a:

array([['P1', 22],
['P2', 39],
['P3', 60],
['P4', 46],
['P5', 26],
['P6', 13],
['P7', 28]], dtype=object)

您可以使用map

l = [['P1', 27], ['P2', 44], ['P3', 65], ['P4', 51], ['P5', 31], ['P6', 18], ['P7', 33]]
result = list(map(lambda x:[x[0],x[1]-5], l))

输出:

[['P1', 22],
['P2', 39],
['P3', 60],
['P4', 46],
['P5', 26],
['P6', 13],
['P7', 28]]

最新更新