bounty将于明天到期。回答此问题可获得+50的声望奖励。Alexander Soare希望吸引更多人关注此问题。
np.typing.NDArray
的documentation说它是“np.ndarray[Any, np.dtype[+ScalarType]]
的泛型版本“,“泛型”中的泛化发生在哪里?
在numpy.ndarray.__class_getitem__
的documentation中,我们有一个np.ndarray[Any, np.dtype[Any]]
的例子,没有解释这两个参数是什么。
为什么我可以做np.ndarray[float]
(只使用一个参数)?这是什么意思?
1条答案
按热度按时间v8wbuo2f1#
np.typing.NDArray
可用于指定具有给定类型的数组,例如整数数组:如果
f = [1, 10, 100]
,则return_numpy_int_array(f)
返回array([ 1, 10, 100])
ndarray是类,它是泛型的,因为它是创建numpy数组的底层方法,作为泛型类型,它可以被参数化,就像list或dict一样;例如:
输出一个32位整数的列表(类似数组)数据类型对象:
因此
np.ndarray[Any, np.dtype[+ScalarType]]
意味着我们可以为dtype
提供一组参数:其输出:
其类型为
<class 'numpy.dtype[void]'>
我们可以通过
dtype_
从ndarray创建一个numpy数组b
:其输出:
其中可以使用
ScalarType
:输出:
它可以是给定值:
输出:
因为我们指定了一个
dtype
,那么b['size'] = "dasbff"
会引发一个错误: