繁体   English   中英

numpy数组-替换某些值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM