我有一個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