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

标签 python arrays numpy

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

相关文章:

c - 如何根据用户输入生成随机数但不重复且在一定范围内?

python - 使用 numpy/scipy 中的插值填充二维矩阵中的缺失值

python - 使用套接字在 Python 中从服务器发送网络摄像头流

python - 如何从名为 __json__ 或适配器的内部重用自定义 Pyramid json 渲染器?

c++ - Array of array 和过滤性能

c - C编译器是否为用于声明数组的变量名分配内存?

python - 在 Python NumPy 中拉伸(stretch)图像的最有效方法

performance - 如何有效地获取 10% 的随机数,然后获取剩余 90 个随机数的 10% 等,直到所有点都分配完毕

Python Numpy - 矩阵内存错误和限制

python - 为什么此 string.punctuation 代码不适用于剥离标点符号?