奇怪的裸体行为,这里发生了什么?

2024-10-03 04:27:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我在使用平均数,它每次都会出错,直到我将输入转换为numpy.64S浮点数。我看了一下来源,是因为以下行为,有什么不同的原因?你知道吗

>>> f, f32 = numpy.float(1.0), numpy.float32(1.0)

>>> (f == 1.0).any()

Traceback (most recent call last):
  File "<pyshell#80>", line 1, in <module>
    (f == 1.0).any()
AttributeError: 'bool' object has no attribute 'any'
>>> (f32 == 1.0).any()
True

Tags: numpymost来源any原因callfloatfile
3条回答

通常不需要使用numpy.float(1.0)这样的表达式。你知道吗

numpy中最常见、最基本的操作是生成一个数组。你知道吗

f = np.array([1.0, 1.23])
mf = f.mean()  # or
mf = np.mean(f)

或整数

f = np.array([1, 3, 5, 3, 5])
f==3
(f==3).any()

注意,我在==测试中使用整数。==使用float时,测试不是一个好主意。你知道吗

我可以进一步指定dtype

 f = np.arange(5, dtype=int)
 f = np.ones((3,4), dtype=float)

这些数组的单个项将是np.floatnp.int等类型。很少需要直接创建一个np.float(1.23)。在创建数组时指定dtype,否则让numpy处理这些细节。你知道吗

>>> type(numpy.float32(1.0))
<type 'numpy.float32'>
>>> type(numpy.float(1.0))
<type 'float'>
>>> type(numpy.float32(1.0) == 1.0)
<type 'numpy.bool_'>
>>> type(numpy.float(1.0) == 1.0)
<type 'bool'>

numpy.float32numpy.bool_不仅用于存储标量,还用于存储向量:

>>> numpy.float32([1.0, 2.0])
array([ 1.,  2.], dtype=float32)
>>> numpy.float32([1.0, 2.0]) == 1.0
array([ True, False], dtype=bool)

所以在numpy.bool_中有一个any()函数来检查这些项是否为真。你知道吗

这是因为numpy.float32对象在与__eq__比较时不返回bool对象,而是返回numpy.bool_对象。你知道吗

>>> type((f == 1.0))
<type 'bool'>
>>> type((f32 == 1.0))
<type 'numpy.bool_'>

相关问题 更多 >