我想將下面的串列推導式轉換為一個 3 維陣列,在其中列印出陣列中last index, max , min每個迭代的 。(arr[i:] > 0).cumsum()/ np.arange(1, len(arr[i:]) 1) * 100)下面的函式計算number of positive array values/ length of array第一個陣列中的so [12,12,-3,-1,2,1]6 個值中有 4 個為正,因此它是66.66% 作為最終結果。但是,如果您只采用前 2 個索引[12,12.....],則它是100%,因此這是最大效率值,如果您采用前 4 個索引,[12,12,-3,-1]則效率將下降到50%。在last_inc, maxs , mins不低于作業,但result確實。我如何能夠將 合并last_inc, maxs , mins到代碼中并獲得下面的預期輸出?
import numpy as np
def run(*args):
result = np.array([np.array([((arr[i:] > 0).cumsum()/ np.arange(1, len(arr[i:]) 1) * 100) for i in range(len(arr))],dtype=object) for arr in args], dtype=object)
last_inc = result[-1]
maxs = np.max(result)
mins = np.min(result)
run(np.array([12,12,-3,-1,2,1]), np.array([-3,-1,-2,1]), np.array([12,-12]))
預期輸出:
last_indexes[[66.66666666666666, 60.0, 50.0, 66.66666666666666, 100.0, 100.0], [25.0, 33.33333333333333, 50.0, 100.0], [50.0, 0.0]]
max[[100.0, 100.0, 50.0, 66.66666666666666, 100.0, 100.0],[25.0, 33.33333333333333, 50.0, 100.0],[100.0, 0.0]]
min[[50.0, 33.33333333333333, 0.0, 0.0, 100.0, 100.0]]
uj5u.com熱心網友回復:
numpy 看起來像你正在做的事情的一個可怕的工具。您的串列理解會阻止您完成作業。您必須對分鐘進行一些過濾,并且可能會包裝代碼
def run2(arr):
last_incs=np.zeros_like(arr, float)
maxs=np.zeros_like(arr, float)
mins=np.zeros_like(arr, float)
for i in range(arr.size):
result=np.cumsum(arr[i:]>0)/np.arange(1,arr[i:].size 1)*100
last_incs[i]=result[-1]
maxs[i]=np.max(result)
mins[i]=np.min(result)
print(last_incs,maxs,mins)
for arr in [
np.array([12,12,-3,-1,2,1]),
np.array([-3,-1,-2,1]),
np.array([12,-12])]:
run2(arr)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/315989.html
