【发布时间】:2021-10-13 22:26:55
【问题描述】:
对于一个数组
array2 = np.array([np.nan, np.nan, np.nan, np.nan, 45, np.nan, 33, np.nan,
np.nan, 32, np.nan, np.nan, 44, np.nan, 10, 53, np.nan])
因此,我需要按条件替换元素:如果一个元素小于 np.mean(array2),则应取自 ordered_array_1 = [32, 10, 33],否则 - 取自 ordered_array_2 = [44, 53, 45]。
我还没有设法为此目的使用 np.putmask 或 numpy.where,例如 np.putmask(array2[~np.isnan(array2)],mask,ordered1) 根本不会替换元素。 array2 没有改变。
我希望从两个数组替换后得到这个结果:
array2 = np.array([np.nan, np.nan, np.nan, np.nan, 44, np.nan, 32, np.nan,
np.nan, 10, np.nan, np.nan, 53, np.nan, 33, 45, np.nan])
【问题讨论】:
-
如果有更多元素可以替换列表中的元素会怎样?如果您有 4 个要替换的元素,而替换列表中只有 3 个
-
什么都没有发生))而且也很奇怪(我的意思是 np.putmask)。
-
抱歉,我提到的示例中的预期输出应该是 4 个要替换的元素,只有 3 个替换项?
-
不能有更多元素,因为有序数组是由array2通过排除和排序生成的