[英]Fill an array with nan in numpy
我有一個大小為1XN的numpy向量my_indexes,其中包含索引的布爾值和大小為MxK的2D數組my_array,其中K <<N。實際上,布爾向量對應於我刪除(或保留在數組my_array中)的列想要添加回填零(或“ NaN”)的列。 我刪除列的代碼:
my_array= np.array(my_array[:, ~np.all(np.isnan(my_array), axis=0)])
cols = np.all(np.isnan(my_array), axis=0)
my_array = some_process(my_array)
# How can I add the removed columns
我的數組大小為MXN ,然后大小為MXK 。 如何再次用nan或0填充刪除的列?
例如:
0.1 nan 0.3 .04 nan 0.12 0.12
0.1 nan 0.3 .04 nan 0.12 0.12
0.1 nan 0.3 .04 nan 0.12 0.12
首先,我想使用my_array= np.array(my_array[:, ~np.all(np.isnan(my_array), axis=0)])
刪除nan列。
0.1 0.3 .04 0.12 0.12
0.1 0.3 .04 0.12 0.12
0.1 0.3 .04 0.12 0.12
my_indexes向量為:
False True False False True False False
然后我要處理矩陣,然后返回nan列(請注意,nan列不能進行預處理)。 我想我需要使用np.insert函數,但是如何使用我的布爾向量
您可能可以為此使用掩碼數組 :
import numpy as np
import numpy.ma as ma
def some_process(x):
return x**2
x = np.arange(9, dtype=float).reshape(3, 3)
x[:,1] = np.nan
print(x)
# [[ 0. nan 2.]
# [ 3. nan 5.]
# [ 6. nan 8.]]
# mask all np.nan and np.inf
masked_x = ma.masked_invalid(x)
# Compute the process only on the unmasked values and fill back np.nan
x = ma.filled(some_process(masked_x), np.nan)
print(x)
# [[ 0. nan 4.]
# [ 9. nan 25.]
# [ 36. nan 64.]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.