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