python - 创建具有一个数组形状和列表中的值的 numpy 数组

标签 python numpy superpixels

我有一个 (128x128) 数组,其中包含每个像素所属的簇/超像素的值,小 9x9 示例:

array([[0, 0, 1, 1, 1, 2, 2, 2, 2],
       [0, 0, 1, 1, 1, 2, 2, 2, 2],
       [0, 0, 1, 1, 1, 2, 2, 2, 2],
       [3, 3, 3, 3, 4, 4, 4, 4, 4],
       [3, 3, 3, 3, 4, 4, 4, 4, 4],
       [3, 3, 3, 3, 4, 4, 4, 4, 4],
       [5, 5, 5, 6, 6, 6, 7, 7, 7],
       [5, 5, 5, 6, 6, 6, 7, 7, 7],
       [5, 5, 5, 6, 6, 6, 7, 7, 7]])

然后我有一个包含超像素(簇)数量长度的列表,例如:

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

我现在想要创建一个新的 (128,128) 数组,其中列表中的值替换相应超像素(簇)中的所有像素值,例如:

array([[0, 0, 1, 1, 1, 0, 0, 0, 0],
       [0, 0, 1, 1, 1, 0, 0, 0, 0],
       [0, 0, 1, 1, 1, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0],
       [1, 1, 1, 0, 0, 0, 1, 1, 1],
       [1, 1, 1, 0, 0, 0, 1, 1, 1],
       [1, 1, 1, 0, 0, 0, 1, 1, 1]])

为了澄清,如果列表中的第一项 == 1,我想创建一个新的 (128,128) 数组,其中 == 列表索引的值将替换为列表中该索引处的值。

最佳答案

使用原始数组作为映射数组的索引:

>>> arr
array([[0, 0, 1, 1, 1, 2, 2, 2, 2],
       [0, 0, 1, 1, 1, 2, 2, 2, 2],
       [0, 0, 1, 1, 1, 2, 2, 2, 2],
       [3, 3, 3, 3, 4, 4, 4, 4, 4],
       [3, 3, 3, 3, 4, 4, 4, 4, 4],
       [3, 3, 3, 3, 4, 4, 4, 4, 4],
       [5, 5, 5, 6, 6, 6, 7, 7, 7],
       [5, 5, 5, 6, 6, 6, 7, 7, 7],
       [5, 5, 5, 6, 6, 6, 7, 7, 7]])
>>> mapping = np.array([0, 1, 0, 0, 0, 1, 0, 1])
>>> mapping[arr]
array([[0, 0, 1, 1, 1, 0, 0, 0, 0],
       [0, 0, 1, 1, 1, 0, 0, 0, 0],
       [0, 0, 1, 1, 1, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0],
       [1, 1, 1, 0, 0, 0, 1, 1, 1],
       [1, 1, 1, 0, 0, 0, 1, 1, 1],
       [1, 1, 1, 0, 0, 0, 1, 1, 1]])

关于python - 创建具有一个数组形状和列表中的值的 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72336232/

相关文章:

python - 将数字表示为其因子的乘积

Python 参数解析 : Mutually exclusive required group with a required option

python - 使用 linalg 查找特征向量

matlab - 图像中超像素的相邻和不相邻超像素

python - 在 SqlAlchemy 中创建动态选择查询

python - 使用 Numpy 进行矩阵的最小二乘回归

python - Python 中小于阈值的值

python - 将向量 (1 x N) 乘以张量 (N x M x M)

python - 切片超像素的平均颜色