【问题标题】:Adding a value to the first index of a list of array by using a list comprehension Python使用列表推导 Python 将值添加到数组列表的第一个索引
【发布时间】:2022-01-09 22:42:08
【问题描述】:

下面的 Vals 列表推导修改了 Values 以便对于第 n 行它索引数组值。我如何能够在 Vals 列表理解中添加一个增量,它在所有修改后的列表前面添加 100?我只想修改列表理解函数来做到这一点。

import numpy as np 

first_index_val = 100
Values = np.array([[130,123,135.3,139.05,156.08,163.88,173.72],
                  [130,123,135.3,139.05,156.08,163.88,173.72],
                  [130,123,135.3,139.05,156.08,163.88,173.72],
                  [130,123,135.3,139.05,156.08,163.88,173.72],
                  [130,123,135.3,139.05,156.08,163.88,173.72],
                  [130,123,135.3,139.05,156.08,163.88,173.72],
                  [130,123,135.3,139.05,156.08,163.88,173.72]])

Vals = np.array([arr[i:] for i,arr in enumerate(Values.tolist())])

输出:

[list([130.0, 123.0, 135.3, 139.05, 156.08, 163.88, 173.72])
 list([123.0, 135.3, 139.05, 156.08, 163.88, 173.72])
 list([135.3, 139.05, 156.08, 163.88, 173.72])
 list([139.05, 156.08, 163.88, 173.72]) list([156.08, 163.88, 173.72])
 list([163.88, 173.72]) list([173.72])]

预期输出:

[list([100, 130.0, 123.0, 135.3, 139.05, 156.08, 163.88, 173.72])
 list([100, 123.0, 135.3, 139.05, 156.08, 163.88, 173.72])
 list([100, 135.3, 139.05, 156.08, 163.88, 173.72])
 list([100, 139.05, 156.08, 163.88, 173.72]) list([100, 156.08, 163.88, 173.72])
 list([100, 163.88, 173.72]) list([100, 173.72])]

【问题讨论】:

  • 在列表理解中使用[100] + arr[i:]`

标签: python arrays list numpy list-comprehension


【解决方案1】:

这是我的看法,简单明了。

import numpy as np

first_index_val = 100
values = np.array([[130, 123, 135.3, 139.05, 156.08, 163.88, 173.72],
               [130, 123, 135.3, 139.05, 156.08, 163.88, 173.72],
               [130, 123, 135.3, 139.05, 156.08, 163.88, 173.72],
               [130, 123, 135.3, 139.05, 156.08, 163.88, 173.72],
               [130, 123, 135.3, 139.05, 156.08, 163.88, 173.72],
               [130, 123, 135.3, 139.05, 156.08, 163.88, 173.72],
               [130, 123, 135.3, 139.05, 156.08, 163.88, 173.72]])

values = np.array([ [100] + arr[i:] for i, arr in enumerate(values.tolist())])
print(values)

【讨论】:

  • 在最后一次翻转后使用您的枚举
  • 感谢您的解决方案,但这样做时我仍然没有得到预期的输出。即使在枚举之后。
  • 在这种情况下,按照@Pepsi-Joe 发布的解决方案,只有他放错了 [100] 应该是:np.array([ [100] + arr[i:] for i, arr in enumerate(values.tolist())])
  • 我编辑了上面的代码以获得您想要的解决方案。希望这会有所帮助。
【解决方案2】:

只需添加到列表推导中即可。

Vals = np.array([[100] + arr[i:] for i,arr in enumerate(Values.tolist())])

【讨论】:

  • 此代码的功能不起作用
  • 是的,Numpy 似乎对不同长度的行不满意。你需要它在一个数组中吗?看来您想要一个列表列表。如果您对列表列表没问题,那么请在我的回答中去掉 np.array。
猜你喜欢
  • 2013-05-24
  • 1970-01-01
  • 2018-03-06
  • 1970-01-01
  • 1970-01-01
  • 2018-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多