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])
然后你可以相应地测试每个元素的类型。
我有一个 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])
然后你可以相应地测试每个元素的类型。