![](/img/trans.png)
[英]Setting values of an array to -inf in Python with scipy/numpy
[英]How to change inf values in numpy array for the previous non inf value?
我有一個 numpy 數組,其中可能包含 inf 值。
numpy 數組是一維數字向量。
有沒有辦法為數組的前一個值(不是 inf)更改數組的 inf 值?
因此,如果數組的第 1000 個索引是 inf,則應將其替換為不是 inf 的第 999 個索引。
這是我想要的例子
vals = np.random.random(10000)
vals[vals<0.1] = np.inf
indexes = np.asarray(vals==np.inf).nonzero()
for i in indexes:
vals[i] = vals[i-1]
if np.isinf(vals).any():
print("It doesnt work")
else:
print("It works")
def pandas_fill(arr):
df = pd.DataFrame(arr)
df.fillna(method='ffill', axis=1, inplace=True)
out = df.as_matrix()
return out
def numpy_fill(arr):
mask = np.isnan(arr)
idx = np.where(~mask,np.arange(mask.shape[1]),0)
np.maximum.accumulate(idx,axis=1, out=idx)
out = arr[np.arange(idx.shape[0])[:,None], idx]
return out
inf
和-inf
將作為nan
加載。 所以,這個應該和那個一起處理。
試試這個更新的。
import numpy as np
Data = np.array([np.nan,1.3,np.nan,1.4,np.nan,np.nan])
nansIndx = np.where(np.isnan(Data))[0]
isanIndx = np.where(~np.isnan(Data))[0]
for nan in nansIndx:
replacementCandidates = np.where(isanIndx>nan)[0]
if replacementCandidates.size != 0:
replacement = Data[isanIndx[replacementCandidates[0]]]
else:
replacement = Data[isanIndx[np.where(isanIndx<nan)[0][-1]]]
Data[nan] = replacement
print(Data)
你為什么不使用最簡單的方法?
for i in range (0,len(a)):
if a[i]==inf: a[i]=a[i-1]
我從來沒有和 inf 一起工作過。 也許你的類型是 str 所以你應該寫 a[i]=='inf'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.