numpy 有没有一种方法可以使用matplotlib直接(并且仅)在另一个数组的顶部绘制一个数组?

qfe3c7zg  于 2023-04-21  发布在  其他
关注(0)|答案(1)|浏览(95)

我有一个2D 5x5数组,其中包含10个nan值(其余15个是零),我想绘制第二个包含15个nan值的2D 5x5数组(其余10个为零)使得第二阵列的10个零被放置在第一阵列的Nan个值所在的位置并且第一阵列的15个零被放置在第二阵列的Nan个值所在的位置,如何使用numpy和matplotlib?
我已经随机生成了两个数组,并应用了一个布尔掩码(np.isnan),但我不清楚下一步该怎么做。我试着在谷歌上搜索它,但没有找到任何答案。我试着将布尔掩码应用到arr2或将其添加到arr2,但我得到的最接近的结果是两个数组总共只填充了25个可用单元格中的15个。下面是我到目前为止的代码:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors

arr1 = np.zeros((5, 5))
no_arr1 = 10
for i in range(no_arr1):
    x = np.random.randint(0, 5)
    y = np.random.randint(0, 5)
    arr1[x, y] = np.nan
col1 = ["lime"]
one = mcolors.ListedColormap(col1)
mask_1 = np.isnan(arr1)
mask_1_2 = arr1 == 0

arr2 = np.zeros((5, 5))
no_arr2 = 15
for i in range(no_arr2):
    x = np.random.randint(0, 5)
    y = np.random.randint(0, 5)
    arr2[x, y] = np.nan
col2 = ["hotpink"]
two = mcolors.ListedColormap(col2)

fig, ax = plt.subplots()

ax.imshow(arr1, cmap=one)
ax.imshow(arr2, cmap=two)

plt.show()

你可以忽略颜色部分,我这样做只是为了能够清楚地看到图表上绘制的内容。

bd1hkmkf

bd1hkmkf1#

为了创建一个新的数组,其中有零的原始值为nan,而nan的原始值为非nan,你可以使用这个:

arr2 = np.where(np.isnan(arr1), 0, np.nan)

相关问题