【发布时间】:2022-01-12 07:54:12
【问题描述】:
我需要在数组中重新插入以前删除的元素。在这种情况下,我需要在修复一组参数后最小化一组参数的损失函数。最小化器只取剩余的未固定子集,但我需要将整个参数集传递给要最小化的函数。
我想过使用 np.delete 和要排除的元素的索引,然后使用 np.insert 以相同的逻辑撤消它,但是由于 np.insert 和 np.delete 在中不对称,以下方法不起作用他们是如何运作的:
import numpy as np
pars = np.array([0,10,20,30,40,50])
exclude = [1,3] # index of elements to exclude
parsSubset = np.delete(pars,exclude)
excludedPars = pars[exclude]
parsRecreated = np.insert(parsSubset,exclude,excludedPars)
print(parsRecreated)
此类代码的输出为[ 0 10 20 40 30 50]
我在下面提供了我的解决方案,但我想知道我是否缺少更优雅的解决方案
【问题讨论】:
-
当元素被删除时,数组真的“讨厌”......也许你需要一个列表?
-
虽然我讨厌列表 :) ...这里的问题是 np.delete 不像 np.insert 那样“按顺序”工作,也就是说,它一次删除所有元素。跨度>
-
运气不好。如果你看到了一个解决方案,但你决定不喜欢它使用的结构......
-
带有列表的代码看起来如何?