Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Matplotlib:在数组中打印nan元素_Python_Arrays_Matplotlib - Fatal编程技术网

Python Matplotlib:在数组中打印nan元素

Python Matplotlib:在数组中打印nan元素,python,arrays,matplotlib,Python,Arrays,Matplotlib,我试图屏蔽一个数据数组,因此对于数组中小于9的每个值,我希望将其设置为0。每个大于9的值我都希望设置为1。这样,当我将这个数组乘以我想要屏蔽的数组时,任何值都将被乘以0(从而屏蔽该数据)或(1),即,该数据将保留。希望这是有道理的 我想知道matplotlib如何将两个维度相等的数组绘制在一起,比如数组中的一个元素是“nan”,另一个对应的元素是42。matplotlib是否会自动不打印此值 我想会的,但我只是想验证一下这一点。非常感谢。您可以非常简单地构建遮罩矩阵: numpy.array((

我试图屏蔽一个数据数组,因此对于数组中小于9的每个值,我希望将其设置为0。每个大于9的值我都希望设置为1。这样,当我将这个数组乘以我想要屏蔽的数组时,任何值都将被乘以0(从而屏蔽该数据)或(1),即,该数据将保留。希望这是有道理的

我想知道matplotlib如何将两个维度相等的数组绘制在一起,比如数组中的一个元素是“nan”,另一个对应的元素是42。matplotlib是否会自动不打印此值


我想会的,但我只是想验证一下这一点。非常感谢。

您可以非常简单地构建遮罩矩阵:

numpy.array((yourarray > 9), dtype=int)
如果需要,可以将>更改为>=。您编写的关系不清楚,如果值等于9,您没有定义要执行的操作

如果为“无”,则NaN、inf值matplotlib将不会打印该点。 例如


第三个点将不会打印。

如果遮罩阵列,则可以正常打印。如果添加两个遮罩阵列,将正确组合遮罩,如下面的示例所示。我已经生成了0到20之间的随机数据,并屏蔽了两个数组中小于9的所有值

import numpy as np
import matplotlib.pyplot as pl

# Create random data between 0 and 20.
a = np.random.rand(10, 10)*20
b = np.random.rand(10, 10)*20

# Mask all values less than 9.
a = np.ma.array(a, mask=a < 9.)
b = np.ma.array(b, mask=b < 9.)

# Plot a, b and the sum of both.
pl.subplot(131)
pl.pcolormesh(a, cmap=pl.cm.hot)
pl.subplot(132)
pl.pcolormesh(b, cmap=pl.cm.hot)
pl.subplot(133)
pl.pcolormesh(a+b, cmap=pl.cm.hot)
pl.show()
将numpy导入为np
将matplotlib.pyplot作为pl导入
#创建0到20之间的随机数据。
a=np.rand.rand(10,10)*20
b=np.随机.兰德(10,10)*20
#屏蔽所有小于9的值。
a=np.ma.数组(a,掩码=a<9)
b=np.ma.阵列(b,掩码=b<9)
#图a、b以及两者之和。
pl.子地块(131)
pl.pcolormesh(a,cmap=pl.cm.hot)
pl.子地块(132)
pl.pcolormesh(b,cmap=pl.cm.hot)
pl.子地块(133)
pl.pcolormesh(a+b,cmap=pl.cm.hot)
pl.show()

谢谢。是的,已经应用了一个掩码,如果该值小于9,我将应用一个nan值,因为我将用另一个数组乘以掩码,以确保它被转移。如果我想从两个数组创建掩码,即。,如果一个数组或另一个数组中的值小于9…怎么办?我的意思是,如果其中任何一个数组中的值小于9,则掩码将是,因此需要某种逻辑…?但这就是我的示例正确显示的内容?a+b之和将省略所有在a、b或两者中都有掩码的文件。屏蔽作为OR逻辑运算符工作。
import numpy as np
import matplotlib.pyplot as pl

# Create random data between 0 and 20.
a = np.random.rand(10, 10)*20
b = np.random.rand(10, 10)*20

# Mask all values less than 9.
a = np.ma.array(a, mask=a < 9.)
b = np.ma.array(b, mask=b < 9.)

# Plot a, b and the sum of both.
pl.subplot(131)
pl.pcolormesh(a, cmap=pl.cm.hot)
pl.subplot(132)
pl.pcolormesh(b, cmap=pl.cm.hot)
pl.subplot(133)
pl.pcolormesh(a+b, cmap=pl.cm.hot)
pl.show()