如何删除使用 numpy 时返回的 'dtype'?

How do I remove the 'dtype' being returned when using numpy?

我对 python 有点陌生,我必须为 class 编写一个函数。它接收一个 numpy 数组并在其中搜索某些整数。我使用 doctests 测试函数中的 return 值,并且我在结果中收到 dtype。

例如:

Expected:
array([1,2,3])

Got:
(array([1,2,3], dtype=int64),)

该函数将自动标记,所以我不确定如何正确使用它return。

我做了一些研究,建议使用 numpy.astype 将类型更改为 int32,但是我在尝试这样做时收到错误消息。

myarray = myarray.astype('int32')

有什么办法让它不显示 dtype 吗?

您的函数是 return 元组 (array([1,2,3], dtype=int64),)。因此,当您尝试执行 myarray.astype('int32') 时,您是在尝试在元组上调用此方法。也许您正在使用 np.where 或 return 是一个元组的另一个函数。

您要么只想将函数固定为 return 数组,要么将该行代码更改为 myarray = myarray[0].astype('int32')

此外,您不能从 NumPy 数组中 "remove" dtype。每个 ndarray 都有一个 dtype。我不确定为什么它会显示在您的 doctest 中。 NumPy 测试代码经常使用 np.allclose 来测试数组相等性,因此如果您有类似问题,可能需要检查一下。

在我的 32 位 Windows Python 和 linux 64 位安装中,当 numpy 数组使用非系统默认的整数表示时,会打印 dtype。

例如,在 32 位 windows:

import numpy as np
test = np.array([1, 2, 3, 4])
repr(test)

打印 array(1, 2, 3, 4),而

test = np.array([1, 2, 3, 4], dtype=np.int64)

有一个字符串表示 array[1, 2, 3, 4], dtype=int64

在 64 位 linux 安装上是相反的。看来你是32位的版本,所以int64不是默认的整数类型。

听起来您尝试的解决方案(将数组设为 int32 类型)应该可行 - 您收到了什么错误消息?也许试试 myarray = myarray.astype(np.int32)