如何替换 ndarray 中的第 n 个实例?
How do I replace every nth instance in an ndarray?
我有一个 numpy 数组 atoms.numbers
看起来像:
array([27, 27, 27, 27, 27, 27, 57, 57, 57, 57, 57, 57, 57, 57, 27, 27, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 27, 27, 27, 27, 27, 27, 57, 57, 57, 57, 57,
57, 57, 57, 27, 27, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8])
我可以使用以下方法替换所有相同的实例,例如数组中的每个“57”:
atoms.numbers[atoms.numbers==57]=38
给出:
array([27, 27, 27, 27, 27, 27, 38, 38, 38, 38, 38, 38, 38, 38, 27, 27, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 27, 27, 27, 27, 27, 27, 38, 38, 38, 38, 38,
38, 38, 38, 27, 27, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8])
我希望能够替换数组中的第 n 个实例。我试过:
n=5
atoms.numbers[atoms.numbers==57][::n]=38
这是行不通的。
使用np.where
查找感兴趣项目的索引。找到每一个索引。更新项目:
locations = np.where(numbers == 57)[0]
numbers[locations[::n]] = 38
我有一个 numpy 数组 atoms.numbers
看起来像:
array([27, 27, 27, 27, 27, 27, 57, 57, 57, 57, 57, 57, 57, 57, 27, 27, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 27, 27, 27, 27, 27, 27, 57, 57, 57, 57, 57,
57, 57, 57, 27, 27, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8])
我可以使用以下方法替换所有相同的实例,例如数组中的每个“57”:
atoms.numbers[atoms.numbers==57]=38
给出:
array([27, 27, 27, 27, 27, 27, 38, 38, 38, 38, 38, 38, 38, 38, 27, 27, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 27, 27, 27, 27, 27, 27, 38, 38, 38, 38, 38,
38, 38, 38, 27, 27, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8])
我希望能够替换数组中的第 n 个实例。我试过:
n=5
atoms.numbers[atoms.numbers==57][::n]=38
这是行不通的。
使用np.where
查找感兴趣项目的索引。找到每一个索引。更新项目:
locations = np.where(numbers == 57)[0]
numbers[locations[::n]] = 38