Python 为什么numpy.asarray返回一个充满布尔值的数组
如果我想根据图像中的像素值用Python 为什么numpy.asarray返回一个充满布尔值的数组,python,numpy,types,numpy-dtype,Python,Numpy,Types,Numpy Dtype,如果我想根据图像中的像素值用0或1填充一个数组,我写下以下内容: image = "example.jpg" imageOpen = Image.open(image) bwImage = imageOpen.convert("1", dither=Image.NONE) bw_np = numpy.asarray(bwImage) print(type(bw_np[0, 0])) 结果: <class 'numpy.bool_'> 结果: <class 'numpy.in
0
或1
填充一个数组,我写下以下内容:
image = "example.jpg"
imageOpen = Image.open(image)
bwImage = imageOpen.convert("1", dither=Image.NONE)
bw_np = numpy.asarray(bwImage)
print(type(bw_np[0, 0]))
结果:
<class 'numpy.bool_'>
结果:
<class 'numpy.int32'>
Size of numpy.bool_() : 13
Size of numpy.int32() : 16
但与第二个示例不同,第一个示例充满了true
和false
。
那么为什么呢?简而言之:在python中,True是
1
,False
是0
。这应该可以纠正这种奇怪的行为:
bw_np = numpy.asarray(bwImage, dtype=int)
详细回答:可能imageOpen.convert(“1”,抖动=Image.NONE)
为了更好地管理内存,更喜欢bool而不是int32:
import sys
import numpy
print("Size of numpy.bool_() :", sys.getsizeof(numpy.bool_()))
print("Size of numpy.int32() :", sys.getsizeof(numpy.int32()))
结果:
<class 'numpy.int32'>
Size of numpy.bool_() : 13
Size of numpy.int32() : 16