Numpy Array 按单元格获取数据类型?

Numpy Array get datatype by cell?

我有一个 numpy 数组:

arr = np.array([1, "sd", 3.6])

我想检测字符串类型值的单元格。

这个:

res = arr == type(str)

returns 都是假的。

有什么帮助吗?

你最好在像这样从列表进行转换之前这样做,否则所有数组元素都会更改为相同的数据类型(例如此处的 str

arr = [1, "sd", 3.6]
[type(x)for x in arr]

输出:

[int, str, float]
import numpy as np
arr = np.array([1, "sd", 3.6])

您会注意到此数组中的值不是数字和字符串,它们只是字符串。

>>> arr
array(['1', 'sd', '3.6'], dtype='<U32')

您还会注意到它们不是 python 字符串。这是有原因的,但在这里并不重要。

>>> type(arr[1])
<class 'numpy.str_'>

>>> type(arr[1]) == type(str)
False

您不应像现在这样尝试混合数据类型。请改用列表。当您将输入列表转换为数组时,您在输入列表中的数据类型差异将丢失。我注意到您将数组元素称为 'cell' - 它不是,数组不像电子表格那样工作。

也就是说,如果您绝对必须这样做:

arr = np.array([1, "sd", 3.6], dtype=object)

>>> arr
array([1, 'sd', 3.6], dtype=object)

这会将所有数组元素保留为 python 对象,而不是使用 numpy dtypes。

>>> np.array([type(x) == str for x in arr])
array([False,  True, False])

然后你可以相应地测试每个元素的类型。