gpt4 book ai didi

python - "undo"numpy.delete, numpy.insert?

转载 作者:太空宇宙 更新时间:2023-11-04 11:09:41 25 4
gpt4 key购买 nike

我有 numpy 数组,我想删除少量条目。之后,我想在它们所属的位置插入以前的索引。 numpy.insert不成功:

import numpy

a = numpy.random.rand(7)
idx = [5, 0]

# delete some indices
b = numpy.delete(a, idx)

# magic
b /= 1.0

# insert back?
c = numpy.insert(b, idx, a[idx])

# nope :(
assert numpy.all(numpy.abs(a - c) < 1.0e-10)

有什么提示吗? (最好回答简单。)

也许有比首先使用删除更好的解决方案,例如,通过切片等。

最佳答案

这是array-assignment的一种方式-

out = np.empty(len(b) + len(idx), dtype=b.dtype)
out[idx] = vals
out[np.isin(np.arange(len(out)), idx, invert=True)] = b

另一种方式涉及一些排序 -

sidx = idx.argsort()
out = np.insert(b, idx[sidx] - np.arange(len(idx)), vals[sidx])

请注意,解决方案假定输入为数组。

关于python - "undo"numpy.delete, numpy.insert?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58598838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com