如何通过将 NaN 添加到较小的数组来匹配两个数组?
How to match two arrays by adding NaNs to the smaller array?
我必须绘制一组数组。但是,我生成这些数组的方式是有意义的。例如,
x = np.array([2, 4, 5])
y = np.array([14, 15, NaN, NaN, NaN, 16, NaN])
但我需要将 x 修改为这种格式: np.array([2, 4, NaN, NaN, NaN, 5, NaN])
才能绘制它们。由于我有大量此类情况,第二个数组在任意位置包含 NaN,因此我想知道通过添加必要的 NaN 将 x 转换为 y 格式的最快方法是什么。
谢谢,
这个怎么样,虽然不漂亮,但也够用了。
def add_nans(x,y):
lst = []
index = 0
for val in y:
if np.isnan(val):
lst.append(np.nan)
else:
lst.append(x[index])
index +=1
return np.array(lst)
x = np.array([2, 4, 5])
y = np.array([14, 15, NaN, NaN, NaN, 16, NaN])
x_changed = add_nans(x,y)
使用numpy.resize
的一种方式:
np.resize(x, y.shape[0])*(y/y)
输出:
array([ 2., 4., nan, nan, nan, 5., nan])
解释:
numpy.resize
:重复输入数组 (x
) 以匹配目标 y
的长度(即 y.shape[0]
)
y/y
:产生 1 (int
/int
) 或 np.nan
(anything/np.nan
) 来创建映射数组。
resized_arr * (y/y)
:基本上从调整大小的 x
中提取数字。由于将任何数字与 nan
相乘会得到 nan
,此步骤确保最终数组在必要时具有 nan
,否则从 x
. 获取
我必须绘制一组数组。但是,我生成这些数组的方式是有意义的。例如,
x = np.array([2, 4, 5])
y = np.array([14, 15, NaN, NaN, NaN, 16, NaN])
但我需要将 x 修改为这种格式: np.array([2, 4, NaN, NaN, NaN, 5, NaN])
才能绘制它们。由于我有大量此类情况,第二个数组在任意位置包含 NaN,因此我想知道通过添加必要的 NaN 将 x 转换为 y 格式的最快方法是什么。
谢谢,
这个怎么样,虽然不漂亮,但也够用了。
def add_nans(x,y):
lst = []
index = 0
for val in y:
if np.isnan(val):
lst.append(np.nan)
else:
lst.append(x[index])
index +=1
return np.array(lst)
x = np.array([2, 4, 5])
y = np.array([14, 15, NaN, NaN, NaN, 16, NaN])
x_changed = add_nans(x,y)
使用numpy.resize
的一种方式:
np.resize(x, y.shape[0])*(y/y)
输出:
array([ 2., 4., nan, nan, nan, 5., nan])
解释:
numpy.resize
:重复输入数组 (x
) 以匹配目标y
的长度(即y.shape[0]
)y/y
:产生 1 (int
/int
) 或np.nan
(anything/np.nan
) 来创建映射数组。resized_arr * (y/y)
:基本上从调整大小的x
中提取数字。由于将任何数字与nan
相乘会得到nan
,此步骤确保最终数组在必要时具有nan
,否则从x
. 获取