数组重塑不能正确映射到numpy meshgrid

时间:2014-12-22 15:49:05

标签: python arrays numpy matrix

我有一个长的121元素数组,其中数据以升序存储,我想重塑为11x11矩阵,所以我使用NumPy重塑命令

Z = data.attributevalue[2,time,axial,:]
Z = np.reshape(Z, (int(math.sqrt(datacount)), int(math.sqrt(datacount)))) 

数据应该在笛卡尔平面中定向,我使用以下

创建网格
x = np.arange(1.75, 12.5, 1)
y = np.arange(1.75, 12.5, 1)
X,Y = np.meshgrid(x, y) 

问题是Z行的顺序错误,因此矩阵最后一行的数据应该在第一行,反之亦然。我想重新排列,以便以正确的方式填充行。起始阵列Z按以下排列组装[datapoint#1,datapoint#2 ....,datapoint #N]。数据点#1应位于左上角,最后一个点位于右下角。有没有一种简单的方法来实现这一点,还是我必须创建一个函数来改变行的顺序?

我的情节陈述如下

surf = self.ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet,
    linewidth=1, antialiased=True)

*** **** UPDATE

我尝试向后填充初始数组但仍然没有运气。我将轴的方向更改为以下

y = np.arrange(12.5,1,-1)

这会翻转数据,但是我的轴标签是错误的,因此它不是我的问题的真正解决方案。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

原始阵列可能看起来不像1x121阵列。以下代码块显示了如何将数组从1x121重新整形为11x11。

import numpy as np
A = np.arange(1,122)
print A
print A.reshape((11,11))

给出:

[  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18 19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36 37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54 55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72 73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90 91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121]

[[  1   2   3   4   5   6   7   8   9  10  11]
 [ 12  13  14  15  16  17  18  19  20  21  22]
 [ 23  24  25  26  27  28  29  30  31  32  33]
 [ 34  35  36  37  38  39  40  41  42  43  44]
 [ 45  46  47  48  49  50  51  52  53  54  55]
 [ 56  57  58  59  60  61  62  63  64  65  66]
 [ 67  68  69  70  71  72  73  74  75  76  77]
 [ 78  79  80  81  82  83  84  85  86  87  88]
 [ 89  90  91  92  93  94  95  96  97  98  99]
 [100 101 102 103 104 105 106 107 108 109 110]
 [111 112 113 114 115 116 117 118 119 120 121]]