簡體   English   中英

修改numpy數組中的值

[英]modifying values in numpy array

假設ab給出如下:

a = np.arange(5)
b = [0,1,2]

我要的是,不包括在指數b ,在值a應等於-1。 因此,在上述情況下, a等於

a = array([0, 1, 2, -1, -1])

我知道一種方法,即

a[list(set(a)-set(b))] = -1

但是會花費太多時間,並且在實際編寫代碼時會導致太多復雜性。 一如既往,我一直在尋找比上述方法更好的方法。 隨意使用所需的任何工具。 另一個例子(以防萬一):-如果

a = np.arange(12)
b = [3,5,6]

然后,我真正想要的是a = array([-1, -1, -1, 3, -1, 5, 6, -1, -1, -1, -1, -1]) PS別擔心a將始終是這樣的形式np.arange(int)和沒有的值b超過的長度a

>>> a = np.arange(12)
>>> b = [3,5,6]
>>> a[~np.in1d(np.arange(len(a)), b)] = -1
>>> a
array([-1, -1, -1,  3, -1,  5,  6, -1, -1, -1, -1, -1])

好吧,如果對象要創建與其索引相同或等於-1的值的范圍,則從所有-1開始並添加所需的數據可能會更簡單,而不是相反。

>>> a = np.full(12, -1, dtype=int)
>>> b = [3, 5, 6]
>>> a[b] = b
>>> a
array([-1, -1, -1,  3, -1,  5,  6, -1, -1, -1, -1, -1])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM