假设我想将一个数组的内容复制到另一个数组上,这意味着复制数组的索引将被保留并覆盖第一个数组。在我的例子中,被复制到的数组的长度总是 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/