簡體   English   中英

用numpy中的nan填充數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM