我有一个结构化网格。网格具有坐标 (X,Y),但每个网格单元还分配有一个字母数字代码。 网格 X 和 Y 坐标通过网格生成为 2D 数组。
带有字母数字代码的系列看起来像这样
Index Code
0 aa1
1 aa2
2 aa3
3 aa4
4 bb1
5 bb2
6 bb3
7 bb4
8 ab1
9 ab2
10 ab3
11 ab4
.... .....
我的想法是制作一个字母数字代码的二维数组,以便每个元素的行和列索引将对应于 X 和 Y 二维数组的相同行和列索引。
字母数字值位于与 X 和 Y 二维数组大小相同的 pandas 系列中。我需要对每个第 n 个元素的字母数字值进行切片(因此以 0 到 2 为例,并将其作为第一行)并形成 2D 数组的第一行,并继续像这样填充其余部分。
最后我想要这个:
0 0 1 2
1 aa1 aa2 aa3
2 aa4 bb1 bb2
3 bb3 bb4 ab1
4 ab2 ab3 ab4
.....................
关于如何进行这项工作有什么建议吗? 我设法做到了这一点:
interval = 2
alphanum = [array[i:i+interval] for i in range(len(df.series))[::interval]]
这给了我一个系列列表而不是二维数组
最佳答案
您可以使用numpy.array_split
甚至numpy.split
将数组拆分为多个子数组。但如果无法均分,前者不会引发异常。
In [2]: np.array(np.array_split(df['Code'].values, 4))
Out[2]:
array([['aa1', 'aa2', 'aa3'],
['aa4', 'bb1', 'bb2'],
['bb3', 'bb4', 'ab1'],
['ab2', 'ab3', 'ab4']], dtype=object)
编辑:
你的意思是这样吗?
In [5]: np.array(np.array_split(df.as_matrix(columns=['Code']), 4))
Out[5]:
array([[['aa1'],
['aa2'],
['aa3']],
[['aa4'],
['bb1'],
['bb2']],
[['bb3'],
['bb4'],
['ab1']],
[['ab2'],
['ab3'],
['ab4']]], dtype=object)
关于python - 制作一个二维字符串矩阵来匹配网格坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38696546/