首页 > 解决方案 > 矩阵的 xy 坐标列表

问题描述

我有一个包含 x,y 坐标对的元组列表。我希望将列表转换为矩阵,其中 xy 坐标使用 numpy 表示矩阵的索引,而不使用循环。

对于列表中存在的任何 xy 坐标,在相应的索引位置具有 1,对于列表中不存在的任何值,具有 0。

原始清单:

a = [(0,0),(0,2),(0,3),(0,4),
    (1,1),(1,2),(1,4),(2,2),
    (3,2),(3,4), (4,4)]
a

期望的输出:维度数组(5,5)

[
 [1, 1, 0, 1, 1],
 [1, 0, 0, 0, 0],
 [1, 1, 1, 1, 0],
 [0, 1, 0, 0, 0],
 [1, 0, 0, 0, 0]
                ]

类似于python - numpy 从索引列表创建 2D 掩码 + 然后从掩码数组中绘制 - 堆栈内存溢出但不使用 scipy。

标签: pythonarraysnumpy

解决方案


使用numpy.add.atnumpy.rot90

import numpy as np

res = np.zeros((5,5))
np.add.at(res, tuple(zip(*a)), 1)
np.rot90(res)
array([[1., 1., 0., 1., 1.],
       [1., 0., 0., 0., 0.],
       [1., 1., 1., 1., 0.],
       [0., 1., 0., 0., 0.],
       [1., 0., 0., 0., 0.]])

推荐阅读