我有两个数据集array1
和array2
,其形状与(365, 180, 140)
完全相同。第一个阵列具有降水值,而第二个阵列具有大气中尘埃浓度的值。数组中的第一个元素表示日期,第二个和第三个元素表示经度和纬度。
我想在散点图上显示这两个数据集之间的相关性。我想在x轴上得到降水值,在y轴上得到尘埃浓度值。基本上,我想在array1
中的每个索引处取值,将其指定为x坐标,并将array2
中相应索引处的值取出,并将其指定为y值。有谁知道我怎么能做到这一点?非常感谢你。
编辑:我的意思是"每个索引"是这样的:例如,我想取array1[1, 1, 1]
,指定为x坐标,然后取array2[1, 1, 1]
,并指定为y坐标,并在散点图上绘制结果点。我想绘制[1, 2, 1]
,[1, 3, 1]
,[1, 4, 1]
,等等。
答案 0 :(得分:0)
听起来您想要将array1中的每个条目与array2中的相应条目进行对比。
matplotlib中的分散函数会自动展平n维数组,所以这样的东西应该可以工作:
import matplotlib.pyplot as mp
mp.scatter(array1, array2)
您自己也可以更明确地展平数组(索引将被保留):
mp.scatter(array1.flatten(), array2.flatten())
为了提供一个完整的工作示例,这里有一些代码可以创建这些数组并绘制它们,假设降水与灰尘浓度与某些噪声负相关。注意:在matplotlib中渲染的散点图非常慢,因此对于尺寸为365x180x140,绘制可能需要一段时间。
import matplotlib.pyplot as mp
import numpy
# specify dimensions
ndays=30
nlat=20
nlon=40
# create a random array (say "precipitation") with the dimensions above
array1 = numpy.random.random((ndays,nlat,nlon))
# create another array negatively correlated with precipitation
array2 = -1*array1
# and add some noise to array2
array2 += numpy.random.normal(loc=0, scale=0.5, size=array2.shape)
mp.scatter(array1.flatten(), array2.flatten())
mp.xlabel('array1')
mp.ylabel('array2')
以下是这个图: