您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Python之numpy中空值如何設置,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
我不明白為什么我會以0而不是不滿足條件的空值或空值結尾... b是一個用0和1值填充的numpy數組,c是另一個完全填充的numpy數組。
所有陣列均為71x71x166
a = np.empty(((71,71,166))) d = np.empty(((71,71,166))) for indexes, value in np.ndenumerate(b): i,j,k = indexes a[i,j,k] = np.where(b[i,j,k] == 1, c[i,j,k], d[i,j,k])
我想最后得到一個數組,該數組僅具有滿足條件的值,并且在其他任何地方都為空,而不會改變其形狀。
要求澄清的全部澄清問題:我從一個帶有形狀的浮動填充數組開始(71,71,166)我根據應用于float數組的cutoff創建一個int數組,基本上創建了一些bin,大致標出了數組中的10個區域,其間有0個值我想要最終得到的是一個具有形狀(71,71,166)的數組,其具有特定陣列方向的平均值(假設垂直方向,如果您將3D數組視為3D立方體)某個“bin” …所以我試圖循環遍歷“bins”b == 1,b == 2等,在滿足條件的情況下對float進行采樣但在其他地方為null,這樣我就可以取平均值,然后在最后重新組合成一個數組循環….不確定我是否讓自己明白了.我正在使用np.where并使用索引,因為當我嘗試執行此操作時我仍然會遇到錯誤,盡管它感覺非常低效.
考慮這個例子:
import numpy as np data = np.random.random((4,3)) mask = np.random.random_integers(0,1,(4,3)) data[mask==0] = np.NaN
當掩碼為0時,數據將設置為nan.當然,您可以使用任何類型的條件,或者對b中的不同值執行不同的操作.
要刪除除特定bin之外的所有內容,請嘗試以下操作:
c[b!=1] = np.NaN
因此,要復制特定bin中的所有內容:
a = np.copy(c) a[b!=1] == np.NaN
要獲得bin中所有內容的平均值:
np.mean(c[b==1])
所以也許這可能會做你想要的(其中bin是bin值的列表):
a = np.empty(c.shape) a[b==0] = np.NaN for bin in bins: a[b==bin] = np.mean(c[b==bin])
關于Python之numpy中空值如何設置就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。