gpt4 book ai didi

python - 如何在维护索引的同时将一个 numpy 数组的内容复制到另一个?

转载 作者:太空宇宙 更新时间:2023-11-04 07:36:23 31 4
gpt4 key购买 nike

假设我想将一个数组的内容复制到另一个数组,这意味着复制数组的索引将被保留并覆盖第一个数组。在我的例子中,被复制到的数组的长度总是 3,而复制的数组将是任意长度。

如果复制数组小于 三个,我可以像这样轻松地做到这一点:

>>>a = numpy.zeros(3, int)
>>>a
a = array([0,0,0])
>>>b = numpy.array([2,3])
>>>a[:len(b)] = b
>>>a
a = array([2,3,0])

如果复制数组大于三个,我也可以这样做:

>>>c = numpy.array([5,6,7,8])
>>>a = c[:3]
>>>a
a = array([5,6,7])

但是有没有更优雅的 numpy 方法可以做到这一点而不必编写 if 来捕获这两种情况?像 put() 这样的东西允许复制 某个索引?

编辑:

提出了一种适用于任意大小的数组 x 的单行代码:

a[:numpy.min([3, len(x)])] = x[:numpy.min([3, len(x)])

但还是想要更干净的东西

最佳答案

对于您的用例:

a[:len(b)] = b[:3]

诀窍是记住切片“越过 numpy 数组的末尾”不会引发错误:

In [1]: foo = np.arange(3)

In [2]: foo
Out[2]: array([0, 1, 2])

In [3]: foo[:64]
Out[3]: array([0, 1, 2])

关于python - 如何在维护索引的同时将一个 numpy 数组的内容复制到另一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34320938/

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