[英]numpy array - replace certain values
我还没有开始理解numpy数组引用。
我有一个数组,其中前2列将始终具有一些必要的负值,而其余列则需要将其负值替换为0。 我了解可以通过多种方式来执行此操作 。 让我感到困惑的部分是如何将这些方法之一与仅对2列以后的列进行合并。
数组示例:
[[x, y, flow, element1, element2, element3] [x, y, flow, element1, element2, element3] [x, y, flow, element1, element2, element3]]
期望的结果是,对于整个数组,任何负数都将被替换为0,除非它们是x或y。
听起来像您想要的:
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
您将需要clip
数组的子集。
像这样的东西:
a[2:].clip(0, None)
您可以通过两种方法执行此操作。 一个会在for循环中:
for list in list_of_lists:
list[2:] = list[2:].clip(0, None)
或者,使用[:, 2:]
它引用您的名单列表( :
),然后的所有子列表( 2:
结果基本上就是Joe Kingston的建议:
list[:, 2:] = list[:, 2:].clip(0, None)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.