我有一个长的 121 元素数组,其中数据按升序存储,我想 reshape 为 11x11 矩阵,因此我使用 NumPy reshape 命令
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 按以下排列组合[数据点#1、数据点#2 ....、数据点#N]。数据点 #1 应位于左上角,最后一个点位于右下角。有没有一种简单的方法可以完成此操作,或者我是否必须创建一个函数来更改行的顺序?
我的情节陈述如下
surf = self.ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet,
linewidth=1, antialiased=True)
***更新****
我尝试向后填充初始数组,但仍然没有成功。我将轴的方向更改为以下
y = np.arrange(12.5,1,-1)
这翻转了数据,但我的轴标签是错误的,所以它不是我的问题的真正解决方案。有什么想法吗?
最佳答案
您的原始数组可能看起来不像 1x121 数组。以下代码块显示了如何将数组从 1x121 reshape 为 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]]
关于python - 数组 reshape 未正确映射到 numpy 网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27605946/