0

私は2つのnumpy.ndarrayを持っていて、data2をdata1でマスクするための洗練されていない解決策(4行以上のコードを使用)を見つけました。私はエレガントな解決策を求めています。

例。

data1 = np.array([[1,2,np.nan,4,5],[np.nan,7,np.nan,9,np.nan],[11,12,13,14,np.nan],[np.nan,17,np.nan,19,20]])
data2 = np.ones((6, 4))

print data1
[[  1.   2.  nan   4.   5.]
 [ nan   7.  nan   9.  nan]
 [ 11.  12.  13.  14.  nan]
 [ nan  17.  nan  19.  20.]]
>>> print data2
[[ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]]

私が望む結果は次のとおりです。

[[  1.   2.  1   4.   5.]
 [ 1   7.  1   9.  1]
 [ 11.  12.  13.  14.  1]
 [ 1  17.  1  19.  20.]]

つまり、data1がnanである場合、data2の値です。

ヘルプと提案を事前に感謝します。私は4行以上のコードでこれを行いました

4

1 に答える 1

2

data1 と data2 を同じサイズの配列として持つことを意味すると仮定します (これにより、例が読み取りに変わります):

data2 = np.ones((4, 5))

1行のアプローチは次のとおりです。

data1[np.isnan(data1)] = data2[np.isnan(data1)]
于 2012-10-05T16:59:56.480 に答える