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