Python NumPy中是否有复制索引分配操作?

Python NumPy中是否有复制索引分配操作?,python,numpy,slice,assign,scatter,Python,Numpy,Slice,Assign,Scatter,在一个复制索引赋值操作中(通过复制更改子切片的元素或数组的子索引),是否有与下面最后两行代码相同的操作 import numpy as np a, b = np.zeros([4, 6]), np.ones([2, 3]) c = np.copy(a) c[1:3, 2:5] = b 我想在一行中这样做: c = np.copy_index_assign(a, np.s_[1:3, 2:5], b) 我认为这通常被称为scatter操作,就像在中一样 复制和分配的好简称可能是np.repla

在一个复制索引赋值操作中(通过复制更改子切片的元素或数组的子索引),是否有与下面最后两行代码相同的操作

import numpy as np
a, b = np.zeros([4, 6]), np.ones([2, 3])
c = np.copy(a)
c[1:3, 2:5] = b
我想在一行中这样做:

c = np.copy_index_assign(a, np.s_[1:3, 2:5], b)
我认为这通常被称为
scatter
操作,就像在中一样

复制和分配的好简称可能是
np.replace

有,所有这些insert/append/delete元素都返回修改后的副本,但是否有与
np.replace
相同的赋值函数(元素的replacemenet)返回被替换元素的副本

当然,我可以像下面的代码中那样使用
def
一个简单的函数来实现这一点,但也许在标准NumPy中已经有这样的内置操作了

def replace(a, obj, b):
    c = np.copy(a)
    c[obj] = b
    return c
另外,如果没有内置的操作,这个操作可以在一个班轮中实现吗


如果这种操作除了分配给slice外还支持分配给给定的索引数组,那就太好了。

有些函数/方法的名称像
copyto
put
place
,但我想不出任何东西既能提供副本,又能提供索引分配的全部功能(带广播)@hpaulj我之所以考虑复制和赋值,是因为numpy中几乎所有函数/操作都是不可变的,这意味着它们返回的不是就地操作,而是修改过的副本。因此,我们希望在分配任务时也能做到这一点。不可变操作很好,因为它们可以链接在一个线性行中。@hpaulj还有
np.insert
np.append
np.delete
,但没有替换(分配)元素的操作。虽然替换实际上可以通过两个操作来实现
np.delete
plus
np.insert
。但我不会将
insert
append
delete
放在这个类别中。它们是返回新阵列的代价高昂的函数。它们必须这样做,因为结果的大小不同
append
只是
concatenate
的一个幌子。有一些函数/方法的名字像
copyto
put
place
,但我想不出任何东西能同时提供副本和索引分配的全部功能(带广播)@hpaulj我之所以考虑复制和赋值,是因为numpy中几乎所有函数/操作都是不可变的,这意味着它们返回的不是就地操作,而是修改过的副本。因此,我们希望在分配任务时也能做到这一点。不可变操作很好,因为它们可以链接在一个线性行中。@hpaulj还有
np.insert
np.append
np.delete
,但没有替换(分配)元素的操作。虽然替换实际上可以通过两个操作来实现
np.delete
plus
np.insert
。但我不会将
insert
append
delete
放在这个类别中。它们是返回新阵列的代价高昂的函数。它们必须这样做,因为结果的大小不同<代码>附加只是
连接
的掩护。