python - 使用 Numpy 生成 ASCII 内核

标签 python matrix numpy geospatial arcgis

我正在使用 ArcGIS 焦点统计工具将空间自相关添加到随机栅格中,以对 DEM 中的误差进行建模。输入 DEM 的像素大小为 1.5m,半变异函数显示出 2000m 左右的基台。我想确保对模型中输入的自相关程度进行建模。

不幸的是,ArcGIS 要求输入内核采用 ASCII 格式,其中第一行定义大小,后续行定义权重。

示例:

5 5
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1

我需要生成一个具有反距离加权的 1333x1333 内核,并立即转到 python 来完成此操作。是否可以在numpy中生成矩阵并按环赋值? numpy 中是否存在更好的编程工具来生成纯文本矩阵。

这类似于 this question ,但我需要有一个固定的中心值和降序环,如上面的示例所示。

注意:我是一名学生,但这不是作业……那些作业几年前就结束了。这是我正在开展的一个更大的研究项目的一部分,任何帮助(即使只是朝着正确的方向插入)将不胜感激。这项工作的重点不是对内核进行编程,而是探索 DEM 中的错误。

最佳答案

我不确定是否有内置方法,但推出自己的方法应该不难:

>>> def kernel_thing(N):
...   import numpy as np
...   n = N // 2 + 1
...   a = np.zeros((N, N), dtype=int)
...   for i in xrange(n):
...     a[i:N-i, i:N-i] += 1
...   return a
... 
>>> def kernel_to_string(a):
...   return '{} {}\n'.format(a.shape[0], a.shape[1]) + '\n'.join(' '.join(str(element) for element in row) for row in a)
... 
>>> print kernel_to_string(kernel_thing(5))
5 5
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
>>> print kernel_to_string(kernel_thing(6))
6 6
1 1 1 1 1 1
1 2 2 2 2 1
1 2 3 3 2 1
1 2 3 3 2 1
1 2 2 2 2 1
1 1 1 1 1 1
>>> print kernel_to_string(kernel_thing(17))
17 17
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1
1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 2 1
1 2 3 4 4 4 4 4 4 4 4 4 4 4 3 2 1
1 2 3 4 5 5 5 5 5 5 5 5 5 4 3 2 1
1 2 3 4 5 6 6 6 6 6 6 6 5 4 3 2 1
1 2 3 4 5 6 7 7 7 7 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8 8 8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8 8 8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 7 7 7 7 6 5 4 3 2 1
1 2 3 4 5 6 6 6 6 6 6 6 5 4 3 2 1
1 2 3 4 5 5 5 5 5 5 5 5 5 4 3 2 1
1 2 3 4 4 4 4 4 4 4 4 4 4 4 3 2 1
1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 2 1
1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

关于python - 使用 Numpy 生成 ASCII 内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9560616/

相关文章:

python - 使用 PySpark 将 JSON 文件读取为 Pyspark Dataframe?

Android缩放位图图像

python - 如何在python中屏蔽对象的轮廓

python - 如何在 python pdb 中列出对象的所有属性?

java - 中级Java/Python开发人员的项目构想

algorithm - 限制矩阵中位置的通用算法

matlab - 如何在递归场景下进行异或

numpy - 使用 numpy 求解齐次系统 Ax=0

python - 我可以加快多列上的 groupby 速度,然后使用 1 个句点进行 diff 吗?

Python列表转字符串方法