我有一个长的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)
这会翻转数据,但是我的轴标签是错误的,因此它不是我的问题的真正解决方案。有什么想法吗?
答案 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]]