我见过很多人用基于零的值替换数组中某些元素的例子。
示例:
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。
谢谢
答案 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)]