對于陣列
array2 = np.array([np.nan, np.nan, np.nan, np.nan, 45, np.nan, 33, np.nan,
np.nan, 32, np.nan, np.nan, 44, np.nan, 10, 53, np.nan])
因此我需要按條件替換元素:如果一個元素小于 np.mean(array2),它應該取自ordered_array_1 = [32, 10, 33],否則 - 從ordered_array_2 = [44, 53, 45]。
我還沒有設法使用 np.putmask 或 numpy.where 為此目的,例如np.putmask(array2[~np.isnan(array2)],mask,ordered1)根本不替換元素。array2 不會改變。
我希望在從兩個陣列替換后得到這個結果:
array2 = np.array([np.nan, np.nan, np.nan, np.nan, 44, np.nan, 32, np.nan,
np.nan, 10, np.nan, np.nan, 53, np.nan, 33, 45, np.nan])
uj5u.com熱心網友回復:
使用np.where np.nanmean如下:
import numpy as np
array2 = np.array([np.nan, np.nan, np.nan, np.nan, 45, np.nan, 33, np.nan,
np.nan, 32, np.nan, np.nan, 44, np.nan, 10, 53, np.nan])
ordered_array_1 = [32, 10, 33]
ordered_array_2 = [44, 53, 45]
array2[np.where(array2 < np.nanmean(array2))] = ordered_array_1
array2[np.where(array2 >= np.nanmean(array2))] = ordered_array_2
print(array2)
輸出
[nan nan nan nan 44. nan 32. nan nan 10. nan nan 53. nan 33. 45. nan]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/317008.html
