gpt4 book ai didi

python - numpy.insert 麻烦

转载 作者:行者123 更新时间:2023-11-28 23:03:26 25 4
gpt4 key购买 nike

我试图在某些索引处插入 nan

import numpy
z = numpy.array([1., 1., 0., 0., 0., 2., 3., 4., 5., 6., 0., 7., 8., 9.])
a = z[z!=0]
# Some processing magic happens to a but stays the same shape
b = numpy.argwhere(z == 0).flatten()
c = numpy.insert(a, b, numpy.nan)

我希望结果是:

[1, 1, nan, nan, nan, 2, 3, 4, 5, 6, nan, 7, 8, 9]

但我得到:

[1, 1, nan, 2, nan, 3, nan, 4, 5, 6, 7, 8, 9, nan]

有没有一种方法可以使用 numpy.insert 或其他内置命令来实现这一点,如果没有,什么是好的干净解决方法?索引列表将始终按升序排列,绝不会重复,但可能会像示例中那样存在间隙。

编辑 抱歉,我在编辑问题时造成的困惑。

最佳答案

以下将执行此操作:

numpy.insert(a, b-numpy.arange(len(b)), numpy.nan)

这是一个完整的 ipython session ,包含您的示例:

In [87]: import numpy

In [88]: z = numpy.array([1., 1., 0., 0., 0., 2., 3., 4., 5., 6., 0., 7., 8., 9.])

In [89]: a = z[z!=0]

In [90]: b = numpy.argwhere(z == 0).flatten()

In [91]: c = numpy.insert(a, b, numpy.nan)

In [92]: numpy.insert(a, b - numpy.arange(len(b)), numpy.nan)
Out[92]:
array([ 1., 1., NaN, NaN, NaN, 2., 3., 4., 5., 6., NaN,
7., 8., 9.])

如您所见,NaN 恰好出现在 z 中原先为零的位置。

关于python - numpy.insert 麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8524585/

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