我已经使用以下代码创建了一个视图,但我想了解该视图在幕后的工作原理,
>>> x = np.array([(1, 2)], dtype=np.int8)
>>> y = x.view(dtype=np.int16)
在哪里找到ndarray.view(...)
的源代码,我搜索了GitHub代码存储库,但找不到它
答案 0 :(得分:2)
您最感兴趣的是-编码机制,还是将int8
的值表示为int16
?
view
创建一个具有自己的形状和dtype的新数组,但与源共享数据缓冲区。您将看到的大多数代码都与创建新数组有关,而与特定dtypes几乎没有关系。
实际上int16
有两个版本,分别是大写和小写。
In [194]: np.array([(1,2)],np.int8).view('<i2')
Out[194]: array([[513]], dtype=int16)
In [195]: np.array([(1,2)],np.int8).view('>i2')
Out[195]: array([[258]], dtype=int16)
np.int8
是一个字节,最多可以表示256个值。我们看到的值取决于2个字节如何组合为1个数字。
In [197]: 2*256+1
Out[197]: 513
In [198]: 1*256+2
Out[198]: 258
我的猜测是,您不会在numpy
C代码中看到这种详细程度。它是由C编译器执行的。