静态类型Python中如何声明任意长度一维NumPy数组及区分维度
NumPy静态类型声明问题解答
1. Any的作用
这里的Any是类型提示中的通配符,用来表示数组的形状(shape)不受限制——无论数组是标量、一维还是多维,只要元素类型为float64,都符合这个类型声明。它的本质是告诉类型检查器:无需校验数组的形状,任意形状都可接受。
2. 当前声明是否允许多维数组?
是的,完全允许。因为Any放开了形状限制,所以像(10,)的一维数组、(5,5)的二维数组、(3,4,2)的三维数组,只要元素是float64,都会被类型检查器判定为匹配floats类型。
3. 静态区分一维、二维或三维数组的方法
要精准指定不同维度的数组类型,需要用typing.Tuple来明确描述形状:
- 一维数组:用单元素可变长度元组表示任意长度的一维数组,或固定长度元组表示特定长度的一维数组:
from typing import Tuple import numpy as np float64 = np.dtype[np.float64] # 任意长度的一维float64数组 one_d_float_array = np.ndarray[Tuple[int, ...], float64] # 固定长度(10个元素)的一维数组 fixed_len_one_d = np.ndarray[Tuple[10], float64] - 二维数组:用双元素元组描述行列维度,支持任意或固定形状:
# 任意行列数的二维float64数组 two_d_float_array = np.ndarray[Tuple[int, int], float64] # 固定5行5列的二维数组 fixed_shape_two_d = np.ndarray[Tuple[5,5], float64] - 三维数组:用三元素元组描述三维形状:
# 任意尺寸的三维float64数组 three_d_float_array = np.ndarray[Tuple[int, int, int], float64] # 固定3×4×2形状的三维数组 fixed_shape_three_d = np.ndarray[Tuple[3,4,2], float64]
通过这种方式,类型检查器可以精准识别不同维度的数组,不符合维度的赋值会被标记为类型错误。
内容的提问来源于stack exchange,提问作者Chechy Levas
相关产品推荐
相关产品推荐

