如何用 0 替换数组的某些元素?

时间:2021-03-06 02:31:44

标签: python arrays numpy

我见过很多人用基于零的值替换数组中某些元素的例子。

示例:

Y = [0.5, 18, -6, 0.3, 1, 0, 0, -1, 10, -0.2, 20]

使所有值 < 4 变为 0

然而,我不想要这个。

我想知道如何将条目 0、5、8、9 变成零。

示例:

Y = [0.5, 18, -6, 0.3, 1, 0, 0, -1, 10, -0.2, 20]

我想变成零的条目由数组M给出

M = [0, 5, 8, 9] 

这样我就结束了

Y = [0, 18, -6, 0.3, 1, 0, 0, -1, 0, 0, 20]

顺便说一下,我正在使用 python。

谢谢

4 个答案:

答案 0 :(得分:2)

当您将问题标记为 numpy 时,我假设您想使用 numpy 数组? 如果是这样,你可以这样做:

import numpy as np
Y = np.array([0, 18, -6, 0.3, 1, 0, 0, -1, 0, 0, 20])
M = np.array([0, 5, 8, 9])
Y[M] = 0

答案 1 :(得分:2)

代码

Y = [0.5, 18, -6, 0.3, 1, 0, 0, -1, 10, -0.2, 20]
M = [0, 5, 8, 9]
print("old: ", end="")
print(Y)

for pos in M:
    Y[pos] = 0

print("new: ", end="")
print(Y)

说明:

创建数组并输出它们,以便您可以拥有前后

Y = [0.5, 18, -6, 0.3, 1, 0, 0, -1, 10, -0.2, 20]
M = [0, 5, 8, 9]
print("old: ", end="")
print(Y)

这将遍历 M 中的所有值并将 Y 中的位置设置为零:

for pos in M:
    Y[pos] = 0

输出新数组以显示差异:

print("new: ", end="")
print(Y)

答案 2 :(得分:0)

您可以遍历第二个数组来编辑第一个数组。

y = [0.5, 18, -6, 0.3, 1, 0, 0, -1, 10, -0.2, 20]

m = [0, 5, 8, 9]

for item in m:
    y[item] = 0

print(y) # prints [0, 18, -6, 0.3, 1, 0, 0, -1, 0, 0, 20]

答案 3 :(得分:0)

简单的方法?


arr = [0.5, 18, -6, 0.3, 1, 0, 0, -1, 10, -0.2, 20]
replace_idx = [0, 5, 8, 9]
out = [0 if idx in replace_arr else item for idx,item in  enumerate(arr)]


相关问题