Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.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将2d数据集群到图像?_Python_Arrays - Fatal编程技术网

Python将2d数据集群到图像?

Python将2d数据集群到图像?,python,arrays,Python,Arrays,我有一组72*144的二维数组中的数据。该二维数组中的元素集介于1-12和-999之间。这是2d阵列的快照 array([[ 7, 7, 7, ..., 7, 7, 7], [ 7, 7, 7, ..., 7, 7, 7], [-999, -999, -999, ..., -999, -999, -999], ..., [-999, -999, -999, ..., -99

我有一组72*144的二维数组中的数据。该二维数组中的元素集介于1-12和-999之间。这是2d阵列的快照

array([[   7,    7,    7, ...,    7,    7,    7],
       [   7,    7,    7, ...,    7,    7,    7],
       [-999, -999, -999, ..., -999, -999, -999],
       ...,
       [-999, -999, -999, ..., -999, -999, -999],
       [-999, -999, -999, ..., -999, -999, -999],
       [-999, -999, -999, ..., -999, -999, -999]], dtype=int32)
我想从这个2d阵列创建一个图像,我已经能够使用以下代码创建该图像:

import numpy as np
from matplotlib import pylab as plt

A = np.fromfile('1984_Jan/yyyymmddhh.84010209', dtype='int32')
B = np.reshape(A, (72, 144))

plt.imshow(B, cmap=plt.cm.get_cmap("Reds"), interpolation="nearest")
plt.colorbar()
plt.show()
由此生成的图像只有两种颜色,白色和红色CMAP arg。我想让它生成12种不同的颜色,数据集中每个元素一种。所以,如果一个像素是1,那么它是某种颜色,当它是2,那么它是另一种颜色,依此类推


有人能告诉我如何做到这一点吗?

您只需将get\u cmap中的参数留空,就可以为不同的数字使用不同的颜色:

plt.imshowB,cmap=plt.cm.get\u cmap,插值=最近

但至少在我看来,这种方法不会创造一个体面的形象。因此,我建议您使用一些指定的颜色条形图,但不要使用那些连续的颜色贴图,例如使用gist_彩虹贴图将使其更好:

plt.imshowa,cmap=plt.cm.get\u cmapgist\u rainbow,插值=最近


最后,请查看matplotlib提供的所有颜色贴图。

谢谢您的回答,但我仍然只看到两种颜色,我想为每个像素指定一种颜色。@Pete之所以只看到两种颜色,应该是因为您的矩阵中有-999,这是一个极端数字,这会使颜色贴图混乱。解决这个问题最简单的方法是用[np.where==-999]=0将所有的-999赋值给0。然后我会确保您看到多种颜色。@Pete如果您想创建自己的调色板,请查看并感谢您的帮助0x382fd442。