我有三个2D矩阵(A,B,D)和一个1D数组(C)。A主要包含NaN值,但也包含一些非NaN值。我想将NaN分配给矩阵D中的所有元素,同时满足以下两个条件:
(1)如果A [i,j]中的元素为NaN,则D [i,j]应为NaN。(2)如果B [i,j]不在(0.3-C [j])到(0.7 + C [j])的范围内,则D [i,j]为NaN。
也许是因为我对python还是一个新手,但我已经尝试了很长时间来撰写这段看似简单的代码,而且我也没有太多关于该主题的google python文档,现在我已经用完了时间。因此,如果有人有一个有效的解决方案,我会在这里碰碰运气。据我了解python,一个人希望在可能的情况下避免循环,以提高效率,因此,如果有人知道使用python函数的方法,将不胜感激。提前致谢!
下面的代码不起作用,但是如果上面的代码不清楚,至少可以说明我的雄心。
import numpy as np
# Create the fake matrices A, B, C, D
A = np.full((4,5), np.nan)
A[0,0] = 2
A[1,1] = 2
A[2,2] = 2
A[3,3] = 2
A[1,3] = 2
B = np.random.rand(4,5)
C = np.arange(0.0, 0.1, 0.02)
D = np.ones([4,5])
# First loop: meant to fulfill the first statement
for i in np.arange(4):
for j in np.arange(5):
D[i,j][np.isnan(A[i,j])] = np.nan
# Second loop: meant to fulfill the second statement
for i in np.arange(4):
for j in np.arange(5):
if B[i,j] < (0.3 - C[j]) or B[i,j] > (0.7 + C[j]):
D[i,j] = np.nan
芜湖不芜
MYYA
相关分类