numpy数组 - 替换某些值

时间:2014-08-15 18:52:18

标签: python arrays python-2.7 numpy

我还没有理解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。

2 个答案:

答案 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)