程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Python 类型提示和显式类型仍然会发出警告

发布于2024-11-26 22:09     阅读(968)     评论(0)     点赞(15)     收藏(4)


PyCharm 在以下代码中抛出黄色警告,它似乎认为函数的输出是ndarray[Any, dtype]。我应该忽略这个错误吗?或者有没有 Pythonic 方法来处理这个问题?

我也尝试过np.array(articles, dtype=str)np.array(articles, dtype=np.str_)但都无法解决问题。

import numpy as np


def load_data() -> np.ndarray[str]:
    articles = []
    with open("data/bbc_raw/001.txt", "rt") as f:
        articles.append(f.read().strip())
    return np.array(articles)


if __name__ == "__main__":
    array = load_data()

警告:

Expected type 'ndarray[str]', got 'ndarray[Any, dtype]' instead

解决方案


因此,正如其他人所指出的那样,np.typing.NDArray这确实是可行的方法,但并不是那么简单。为了指定数组的类型,Numpy 要求您使用可以出现在数组中的每种类型的特殊版本,例如:

  • str->np.str_
  • int->np.int_
  • float->np.float_

就我个人而言,我认为上述语法并不完全理想,但它似乎是它预期的工作方式。

因此,为了指定没有类型错误的上述代码,您可以像这样创建返回类型:

import numpy as np
from numpy.typing import NDArray

def load_data() -> NDArray[np.str_]:
    articles = []
    with open("data/bbc_raw/001.txt", "rt") as f:
        articles.append(f.read().strip())
    return np.array(articles)


if __name__ == "__main__":
    array = load_data()

希望这有用!



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/2046114/310ec8dbc043c5a7a17f/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

15 0
收藏该文
已收藏

评论内容:(最多支持255个字符)