【问题标题】:How to add "360" to all negative numbers in a 2-D list?如何将“360”添加到二维列表中的所有负数?
【发布时间】:2021-04-29 18:44:45
【问题描述】:

我正在尝试创建一个嵌套的 for 循环来循环遍历 2D 数组并将“360”添加到所有负数。

我的二维数组或“var”看起来像:

array([[  16,   15,   12,   15],
       [ -85,  -69,  -66,  -68],
       [ -86,  -67,  -64,  -65],
       [ -87,  -80,  -73,  -62],
       [ -23,  -17,  -15,  -13]])

我的嵌套 for 循环如下所示:

for row in var:
    for elem in row:
        if elem < 0:
            elem + 360
print(var)

但我没有运气。任何有关修复 for 循环和打印结果的帮助将不胜感激!谢谢。

【问题讨论】:

  • elem + 360 将值增加 360,然后立即忽略新值。 elem + 360 你没有任何事情。您只是在计算它然后丢弃计算值。
  • [[e + 360 if e &lt; 0 else e for e in row] for row in var]
  • 等等,array?你在使用 NumPy 吗?从您最初的问题中并不清楚。如果您使用的主要库添加了自己的数据类型,请确保包含python 标签 wiki 中所述的相关标签。
  • 或者,如果这些是度数并且您的目标只是将它们标准化为 0 到 359 的范围,则更好的解决方案是 [[e % 360 for e in row] for row in var]

标签: python arrays numpy loops nested


【解决方案1】:

使用 numpy 进行过滤和添加:

var[var<0] += 360

输出:

array([[ 16,  15,  12,  15],
       [275, 291, 294, 292],
       [274, 293, 296, 295],
       [273, 280, 287, 298],
       [337, 343, 345, 347]])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 1970-01-01
    • 2016-07-01
    • 2021-04-22
    • 1970-01-01
    相关资源
    最近更新 更多