如何使用numpy.typing指定返回字符串类型的一维NDArray?
如何为返回字符串类型NumPy数组的函数指定类型提示
当你需要为返回字符串类型一维NumPy数组的函数添加类型提示时,用npt.NDArray[object]会触发Pylance的类型特化警告,这里提供两种正确且规范的解决方式:
推荐方案:使用np.str_作为元素类型
NumPy的字符串数组实际存储的元素类型是numpy.str_(对应Python 3中的unicode字符串),直接用这个类型作为npt.NDArray的类型参数,能准确匹配数组元素类型,不会触发类型检查工具的警告:
import numpy as np import numpy.typing as npt from scipy.sparse import csr_matrix def predict(self, X: csr_matrix) -> npt.NDArray[np.str_]: # 业务逻辑实现 return np.array(["cat", "dog", "bird"])
可选方案:使用np.dtype(str)
你尝试的NDArray[np.dtype(str)]也是可行的,因为np.dtype(str)会被解析为NumPy的字符串 dtype(等同于np.dtype('U')),类型检查工具可以正确识别这个类型,不会报错:
import numpy as np import numpy.typing as npt from scipy.sparse import csr_matrix def predict(self, X: csr_matrix) -> npt.NDArray[np.dtype(str)]: # 业务逻辑实现 return np.array(["cat", "dog", "bird"])
为什么npt.NDArray[object]会报错?
npt.NDArray的类型参数要求是NumPy可识别的标量类型(如np.float64、np.str_)或符合NumPy类型系统的具体类型,而Python原生的object类型过于宽泛,类型检查工具(如Pylance)无法对NDArray[object]进行有效的类型特化,因此抛出警告。
内容的提问来源于stack exchange,提问作者CutePoison
相关产品推荐
相关产品推荐

