相关疑难解决方法(0)

根据键转换numpy数组中的每个元素

我试图numpy.array根据给定的密钥翻译a的每个元素:

例如:

a = np.array([[1,2,3],
              [3,2,4]])

my_dict = {1:23, 2:34, 3:36, 4:45}
Run Code Online (Sandbox Code Playgroud)

我想得到:

array([[ 23.,  34.,  36.],
       [ 36.,  34.,  45.]])
Run Code Online (Sandbox Code Playgroud)

我可以看到如何使用循环:

def loop_translate(a, my_dict):
    new_a = np.empty(a.shape)
    for i,row in enumerate(a):
        new_a[i,:] = map(my_dict.get, row)
    return new_a
Run Code Online (Sandbox Code Playgroud)

是否有更高效和/或纯粹的numpy方式?

编辑:

我计时了,np.vectorizeDSM提出的方法对于更大的数组要快得多:

In [13]: def loop_translate(a, my_dict):
   ....:     new_a = np.empty(a.shape)
   ....:     for i,row in enumerate(a):
   ....:         new_a[i,:] = map(my_dict.get, row)
   ....:     return new_a
   ....: 

In [14]: def vec_translate(a, my_dict):    
   ....:     return np.vectorize(my_dict.__getitem__)(a)
   ....: 

In [15]: a …
Run Code Online (Sandbox Code Playgroud)

python numpy

51
推荐指数
4
解决办法
2万
查看次数

将 RGB 图像转换为索引图像

我想用 Python 将 3 通道 RGB 图像转换为索引图像。它用于处理训练深度网络以进行语义分割的标签。我所说的索引图像是指它有一个通道,每个像素都是索引,索引应该从零开始。当然,它们应该具有相同的尺寸。转换基于 Python 字典中的以下映射:

\n\n
color2index = {\n        (255, 255, 255) : 0,\n        (0,     0, 255) : 1,\n        (0,   255, 255) : 2,\n        (0,   255,   0) : 3,\n        (255, 255,   0) : 4,\n        (255,   0,   0) : 5\n    }\n
Run Code Online (Sandbox Code Playgroud)\n\n

我已经实现了一个简单的功能:

\n\n
def im2index(im):\n    """\n    turn a 3 channel RGB image to 1 channel index image\n    """\n    assert len(im.shape) == 3\n    height, width, ch = im.shape\n    assert ch == 3\n    m_lable = np.zeros((height, width, 1), …
Run Code Online (Sandbox Code Playgroud)

python opencv numpy deep-learning

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

numpy ×2

python ×2

deep-learning ×1

opencv ×1