我想你正在寻找的是np.dstack
(或者更一般地说,np.concatenate
):
label255=label*255
label3=numpy.dstack((label255,label255,label255))
由此可见dstack
产生相同的数组(label3
)作为您的构造label_3d
:
import numpy as np
label=np.random.random((100,100))
label255=label*255
label3=np.dstack((label255,label255,label255))
label_3d = np.empty([100,100,3])
label_3d[:,:,0] = label * 255 # value range of label is [0,1]
label_3d[:,:,1] = label * 255
label_3d[:,:,2] = label * 255
print(np.all(label3==label_3d))
# True
附言。我不确定,但你尝试过使用label3.data
代替ctypes.string_at(id(label3.tostring())+20, 100*100*3)
?