我还没有理解numpy数组引用。
我有一些数组,前两列总是有一些必要的负值,剩下的列需要用0代替它们的负值。我知道to do this有各种各样的方式。让我感到困惑的部分是如何将这些方法中的一种与仅对过去2的列进行组合。
示例数组:
[[x, y, flow, element1, element2, element3] [x, y, flow, element1, element2, element3] [x, y, flow, element1, element2, element3]]
期望的结果是对于整个数组,除非它们是x或y,否则任何负数值都将替换为0。
答案 0 :(得分:3)
这听起来像你想要的:
subset = array[:, 2:]
subset[subset < 0] = 0
或作为一个相当难以理解的单行:
array[:, 2:][array[:, 2:] < 0] = 0
作为一个更完整的例子:
import numpy as np
array = np.random.normal(0, 1, (10, 5))
print array
# Note that "subset" is a view, so modifying it modifies "array"
subset = array[:, 2:]
subset[subset < 0] = 0
print array
答案 1 :(得分:2)
您需要clip
数组的子集。
类似的东西:
a[2:].clip(0, None)
你可以通过几种方式做到这一点。一个人将处于for循环中:
for list in list_of_lists:
list[2:] = list[2:].clip(0, None)
或者,使用[:, 2:]
引用您的列表列表(:
),然后使用其中的所有子列表(2:
)。
结果基本上是乔金斯顿的建议:
list[:, 2:] = list[:, 2:].clip(0, None)