类型提示 2D numpy 数组
Posted
技术标签:
【中文标题】类型提示 2D numpy 数组【英文标题】:Type hint 2D numpy array 【发布时间】:2021-06-13 20:21:45 【问题描述】:作为this question 的后续行动,我有一个函数将返回固定列但可变行的二维numpy.array
import numpy.typing as npt
def example() -> npt.ArrayLike:
data = np.array([[1,2,3],
[4,5,6],
...,
[x,y,z]])
我怎样才能明确提示返回的数组将是 3
列 by N
(变量)行?
【问题讨论】:
这能回答你的问题吗? Type hinting / annotation (PEP 484) for numpy.ndarray Numpy Typing 文档没有说明可能的尺寸。所以也许你目前不能轻易。但是,使用Python new type,您也许可以实现自定义解决方案。取决于你想对类型提示做什么,我猜。 那里有一个答案,指定了numpy数组的形状... @SamuelNLP,在添加numpy
输入模块之前,该链接是多年前被询问的。我不得不在接受的答案中添加一个很大的免责声明,因为人们一直不赞成。坚持参考当前的numpy
发展。
【参考方案1】:
目前(2021 年 3 月 16 日)似乎无法对 numpy.ndarray
的形状(或数据类型)进行类型提示。但是,最近有一些针对 numpy 的拉取请求正在朝着这个目标努力。
https://github.com/numpy/numpy/pull/17719
使
np.ndarray
类通用w.r.t。它的形状和数据类型:np.ndarray[~Shape, ~DType]
但是,该 PR 的一个明确非目标是为 numpy.ndarray
创建运行时可下标别名。根据该 PR,这些更改将在以后的 PR 中出现。
https://github.com/numpy/numpy/issues/16544
讨论对形状的键入支持的问题。在撰写本文时它仍然开放。
nptyping
package 可以做到这一点,但这不是 numpy 的一部分。
from typing import Any
from nptyping import NDArray
# Nx3 array with Any data type.
NDArray[(Any, 3), Any]
【讨论】:
以上是关于类型提示 2D numpy 数组的主要内容,如果未能解决你的问题,请参考以下文章
NumPy 类型提示某事物既是数组又是 float32? [复制]
如何将 2D float numpy 数组转换为 2D int numpy 数组?
评估 numpy.radians 和浮点/数组输入元素的类型提示
python使用numpy中的diagonal函数获取2D numpy数组的对角线元素使用numpy中的diagonal函数和sum函数获取2D numpy数组的迹(matrix trace)