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

创建numpy数组时dtype = object是什么意思?

巴学潞
2023-03-14
问题内容

我正在尝试使用numpy数组并创建了一个numpy的字符串数组:

ar1 = np.array(['avinash', 'jay'])

正如我从他们的官方指南中所读到的那样,对numpy数组的操作会传播到各个元素。所以我这样做:

ar1 * 2

但是然后我得到这个错误:

TypeError                                 Traceback (most recent call last)
<ipython-input-22-aaac6331c572> in <module>()
----> 1 ar1 * 2

TypeError: unsupported operand type(s) for *: 'numpy.ndarray' and 'int'

但是当我使用 dtype=object

ar1 = np.array(['avinash', 'jay'], dtype=object)

创建数组时,我可以执行所有操作。

谁能告诉我为什么会这样吗?


问题答案:

NumPy数组存储为连续的内存块。它们通常具有单个数据类型(例如,整数,浮点数或固定长度的字符串),然后将内存中的位解释为具有该数据类型的值。

创建数组的dtype=object方式有所不同。现在,数组占用的内存充满了 指向 Python对象指针 ,这些 指针 存储在内存中的
其他位置 (很像Pythonlist实际上只是对象的指针列表,而不是对象本身)。

诸如此类的算术运算符*不适ar1用于具有string_数据类型的数组(而是使用特殊函数-
参见下文)。NumPy只是将内存中的位视为字符,因此*操作符在这里没有意义。但是,线

np.array(['avinash','jay'], dtype=object) * 2

之所以起作用,是因为该数组是Python字符串(指向)的数组。*这些Python字符串对象的运算符定义明确。在内存中创建新的Python字符串,并object返回引用了新字符串的新数组。

如果您有一个带有string_unicode_dtype的数组,并且想重复每个字符串,则可以使用np.char.multiply

In [52]: np.char.multiply(ar1, 2)
Out[52]: array(['avinashavinash', 'jayjay'], 
      dtype='<U14')

NumPy也有许多其他向量化字符串方法。



 类似资料:
  • 问题内容: 我试图提醒函数返回的值,并且在提醒中获取了此值 [对象对象] 这是JavaScript代码 whichIsVisible是我要检查的功能 问题答案: 从对象到字符串的默认转换是。 在处理jQuery对象时,您可能想做 打印元素的ID。 如评论中所述,您应该使用Firefox或Chrome之类的浏览器中包含的工具代替来自省对象。 旁注 :ID不能以数字开头。

  • 问题内容: 我的警报之一给出了以下结果: 这到底是什么意思?(这是一些jQuery对象的警报。) 问题答案: 这意味着您正在警告对象的实例。在ing对象时,在对象上调用,默认实现返回。 如果要检查对象,则应对其进行检查或对其属性进行枚举,然后使用单独检查它们。

  • 主要内容:numpy.empty(),numpy.zeros(),numpy.ones(),numpy.asarray(),numpy.frombuffer(),numpy.fromiter()在《 NumPy Ndarray对象》一节,介绍了创建 ndarray 数组的基本方法,除了使用 array() 方法外,NumPy 还提供了其他创建 ndarray 数组的方法。本节对这些常用方法做简单介绍。 numpy.empty() numpy.empty() 创建未初始化的数组,可以指定创建数组的

  • 我的问题是"为什么?:" 这些数组完全相同。 我的最小示例并没有再现这一点: 这个也没有: 我不知道为什么这些不平等。还有一个额外的问题,我如何比较它们? 我需要一种有效的方法来检查aaa是否在堆栈aa中。 我没有在aa中使用

  • 主要内容:1. numpy.arange(),2. numpy.linspace(),3. numpy.logspace所谓区间数组,是指数组元素的取值位于某个范围内,并且数组元素之间可能会呈现某种规律,比如等比数列、递增、递减等。 为了方便科学计算,Python NumPy 支持创建区间数组。 1. numpy.arange() 在 NumPy 中,您可以使用 arange() 来创建给定数值范围的数组,语法格式如下: numpy.arange(start, stop, step, dtype

  • 在数组的属性和方法这一小节中我们学习到了如何查看数组的大小、维数(秩)、元素的数据类型、每个元素的大小等等。这一小节将详述如何从数值范围创建特殊数组,比如指定间隔的等差数列型数组、等比数列型数组等。 1. 创建等间隔序列数组 通常定义一个等间隔序列数组(即等差数组),需要指定某些具体要素,例如起始值、终止值、步长、样本数量等。主要功能类似于 Python 内置的 range 函数,但是返回的是一个