如何删除使用 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)
我对 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)