编程语言
首页 > 编程语言> > python – NumPy – 从2D numpy数组创建1-hot tensor

python – NumPy – 从2D numpy数组创建1-hot tensor

作者:互联网

我有一个numpy 2D数组,其值介于0到59之间.

对于那些熟悉DL,特别是图像分割的人 – 我从.png图像创建数组(称之为L),每个像素的值L [x,y]表示该像素所属的类(在60班).

我想创建一个1热的张量 – Lhot,其中(Lhot [x,y,z] == 1)仅在(L [x,y] == z)时,否则为0.

我想用某种广播/索引(1,2行)创建它 – 没有循环.

它应该在功能上等于这段代码(Dtype对应于L):

Lhot = np.zeros((L.shape[0], L.shape[1], 60), dtype=Dtype)
for i in range(L.shape[0]):
    for j in range(L.shape[1]):
        Lhot[i,j,L[i,j]] = 1

有人有想法吗?
谢谢!

解决方法:

使用纯粹的numpy更快更清洁的方式

Lhot = np.transpose(np.eye(60)[L], (1,2,0))

你会遇到多维一热的问题是它们变得非常庞大且非常稀疏,并且没有好办法处理numpy / scipy(或者我认为是sklearn或许多其他ML包)中的2D以上的稀疏数组.你真的需要一个n-d一热吗?

标签:image-segmentation,python,numpy,deep-learning
来源: https://codeday.me/bug/20190823/1699442.html