当前位置: 首页 > 面试题库 >

dtype float'object'和'float'上算术的不同行为

顾骏祥
2023-03-14
问题内容

嗨,大家好,我只是python的新秀(即使在编程方面也是如此),所以我的问题听起来很基本,但我很难理解这一点。

为什么对“浮动对象”进行算术选择行为?

import numpy as np

a = np.random.normal(size=10)
a = np.abs(a)
b = np.array(a, dtype=object)

np.square(a) # this works
np.square(b) # this works

np.sqrt(a) # this works
np.sqrt(b) # AttributeError: 'float' object has no attribute 'sqrt'

图像链接是我在本地jupyter笔记本中的运行结果:

jupyter笔记本运行结果
在此处输入图片说明

赞赏有用的见解!谢谢

编辑050418 09:53-添加一个我认为是类似问题的链接 Numpy
AttributeError:’float’对象没有属性’exp’


问题答案:

@Warren指出square“代表”相乘。我通过制作包含列表的对象数组来验证了这一点:

In [524]: arr = np.array([np.arange(3), 3, [3,4]])
In [525]: np.square(arr)
TypeError: can't multiply sequence by non-int of type 'list'

square 适用于数组的其余部分:

In [526]: np.square(arr[:2])
Out[526]: array([array([0, 1, 4]), 9], dtype=object)

sqrt 不适用于以下任何一项:

In [527]: np.sqrt(arr)
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-527-b58949107b3d> in <module>()
----> 1 np.sqrt(arr)

AttributeError: 'numpy.ndarray' object has no attribute 'sqrt'

我可以sqrt使用自定义类进行工作:

class Foo(float):
    def sqrt(self):
        return self**0.5

In [539]: arr = np.array([Foo(3), Foo(2)], object)
In [540]: np.square(arr)
Out[540]: array([9.0, 4.0], dtype=object)
In [541]: np.sqrt(arr)
Out[541]: array([1.7320508075688772, 1.4142135623730951], dtype=object)


 类似资料:
  • 问题内容: 这是我在Swift编程中的第一天,到现在为止,我们一直在使用ObjectiveC。喜欢, 但是,当我将其中一个值更改为float时,会出现错误。 错误:main.swift:13:11:找不到接受提供的参数的’+’的重载 现在,我进行了Google搜索,并尝试了一些尝试,例如,但是它不起作用。Swift在这种情况下应该将int隐式转换为float,不是吗? 如果我在理解Swift语言时

  • 问题内容: 我有两个熊猫DataFrames-在列上有一个简单的Index 。在和上具有MultiIndex 。 在这种情况下,列(1E,1N,1S和2)是流域盆地。 我想做的是将所有浓度除以盆地(列名)和的权重。 我在这里运气不好。当然是行不通的。我没有很多运气堆叠数据帧并加入 当我离开kwarg时,最后两行不会引发错误,但是会返回joined列的结果。如果我在两个堆叠的DataFrame上都放

  • 当我使用以下代码读取不同设备的相同NFC-Tag时,为什么会收到不同的TechLists: null null 在everey设备上,标签应该有相同的TechList吗?

  • 问题内容: 对于以下代码,我的时间真的很奇怪: 内置浮球:4.9 s float64:10.5 s float32:45.0 s 为什么要慢两倍?为什么比float64慢5倍? 有什么方法可以避免使用的代价,并使函数返回内置而不是? 我发现使用速度比Python的float慢得多,甚至更慢(即使我使用的是32位计算机)。 在我的32位计算机上。因此,每次使用诸如的各种numpy函数时,我都会将结果

  • 问题内容: 我想知道有关Java 中运算符的以下行为。 为什么会这样呢?和之间没有关系,但是它给出false,而如果给出编译器错误? 问题答案: 由于Java没有多类继承,因此在编译过程中绝对知道类型的对象不能是的子类型。另一方面,它可能是interface的子类型,例如在这种情况下: 因此,仅查看表达式编译器无法预先知道它是对还是错,但是查看它知道这始终是假的,因此毫无意义,可帮助您防止错误。如

  • 本文向大家介绍请说说position:absolute和float有什么不同?相关面试题,主要包含被问及请说说position:absolute和float有什么不同?时的应答技巧和注意事项,需要的朋友参考一下 position:absolute;是绝对定位,绝对定位的元素脱离文档流,不占空间,并且可以覆盖文档流的元素; float是浮动,浮动元素脱离文档流,其它元素会占据它原先的位置,文字内容会