我有一个Numpy数组和一个索引列表,以及一个需要进入这些索引值的数组。函数返回np.array的副本替换了一些元素
我知道如何实现最快捷的方式是这样的:
In [1]: a1 = np.array([1,2,3,4,5,6,7])
In [2]: x = np.array([10,11,12])
In [3]: ind = np.array([2,4,5])
In [4]: a2 = np.copy(a1)
In [5]: a2.put(ind,x)
In [6]: a2
Out[6]: array([ 1, 2, 10, 4, 11, 12, 7])
通知我不得不做出的a1
副本。我使用这个的是打包一个函数,它将一个数组作为输入,所以我可以把它给一个优化器,它将改变这些元素的的一些。
所以,理想情况下,我想有一些东西,返回原始的修改后的副本,在一个线,即是这样的:
a2 = np.replace(a1, ind, x)
其原因是,我需要申请它像这样:
def somefunction(a):
....
costfun = lambda x: somefunction(np.replace(a1, ind, x))
随着a1
和ind
不变,这将然后给我一个costfunction这是只有x的函数。
我现在的后备解决方案是定义一个小功能自己:
def replace(a1, ind, x):
a2 = np.copy(a1)
a2.put(ind,x)
return(a2)
...但是这似乎不是很优雅给我。
=>有没有办法将它变成lambda函数?
有什么都没有错小,甚至内部功能。 –
我敢打赌,即使'numpy'提供了这样一个功能,它看起来就像你的。或者''''参数更复杂,并且可以处理标量,列出一个布尔输入。以'np.insert'为例。我只写了一个案例的插入简化解释。 http://stackoverflow.com/a/38667908/901925 – hpaulj