如何使用数组 2 的值在数组 3 的索引处将值填充到数组 1 中?
How can I pad values into array 1 with values from array 2 at indices from array 3?
我正在尝试将值填充到 numpy 数组。该数组最初充满了 ones,我的目标是用另一个数组的值覆盖指定索引处的 ones 的值。
import numpy as np
# get initial array of ones
mask = np.ones(10)
# get values to overwrite ones at indices
values = [10, 30, 50.5]
# get indices for which values will replace ones
idx_pad = [1, 6, 7]
print(mask)
>> [ 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
我想得到的是:
>> [ 1 10 1 1 1 1 30 50.5 1 1 ]
我认为有一种方法可以使用 OrderedDict
来做到这一点,尽管我仍在努力弄清楚。我也希望通过 numpy
有一个快速的方法。我希望将此示例应用于我的实际数据集,其中 len(idx_pad) = 10322
和 len(mask) = 69268
。任何帮助将不胜感激。
这是来自@Divakar 的解决方案。
import numpy as np
# get initial array of ones
mask = np.ones(10)
# get values to overwrite ones at indices
values = [10, 30, 50.5]
# get indices for which values will replace ones
idx_pad = [1, 6, 7]
print(mask)
>> [ 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
# replace values at indices in idx_pad
mask[idx_pad] = values
print(mask)
>> [ 1. 10. 1. 1. 1. 1. 30. 50.5 1. 1. ]
我正在尝试将值填充到 numpy 数组。该数组最初充满了 ones,我的目标是用另一个数组的值覆盖指定索引处的 ones 的值。
import numpy as np
# get initial array of ones
mask = np.ones(10)
# get values to overwrite ones at indices
values = [10, 30, 50.5]
# get indices for which values will replace ones
idx_pad = [1, 6, 7]
print(mask)
>> [ 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
我想得到的是:
>> [ 1 10 1 1 1 1 30 50.5 1 1 ]
我认为有一种方法可以使用 OrderedDict
来做到这一点,尽管我仍在努力弄清楚。我也希望通过 numpy
有一个快速的方法。我希望将此示例应用于我的实际数据集,其中 len(idx_pad) = 10322
和 len(mask) = 69268
。任何帮助将不胜感激。
这是来自@Divakar 的解决方案。
import numpy as np
# get initial array of ones
mask = np.ones(10)
# get values to overwrite ones at indices
values = [10, 30, 50.5]
# get indices for which values will replace ones
idx_pad = [1, 6, 7]
print(mask)
>> [ 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
# replace values at indices in idx_pad
mask[idx_pad] = values
print(mask)
>> [ 1. 10. 1. 1. 1. 1. 30. 50.5 1. 1. ]