不知道为什么我找不到这个,但以下是什么意思?
hashvalue_byte_size = len(bytes(np.int64(42).data))
从左到右,我一般会说这描述了 np.int64(42).data 中字节的长度。
所以字节长度是8。
我认为 'np.int64()' 表示 (-9223372036854775808 到 9223372036854775807) 中的整数或 (0 到 18446744073709551615) 中的无符号整数
或者前缀“np”是否使 int64() 成为其他东西?
最后,“42”代表什么?.data 是什么意思?
从内到外解析这样的表达式是最有意义的:
In [189]: np.int64(42)
Out[189]: 42
In [190]: type(_)
Out[190]: numpy.int64
In [191]: np.int64(42).data
Out[191]: <memory at 0x7f7dc41a82e8>
In [192]: type(_)
Out[192]: memoryview
In [193]: np.int64(42)
Out[193]: 42
In [194]: type(_)
Out[194]: numpy.int64
In [195]: np.int64(42).data
Out[195]: <memory at 0x7f7dcc05cac8>
In [196]: type(_)
Out[196]: memoryview
In [197]: bytes(np.int64(42).data)
Out[197]: b'*\x00\x00\x00\x00\x00\x00\x00'
In [198]: len(_)
Out[198]: 8
查看具有一个或多个元素的 numpy 数组可能更有意义:
In [204]: np.array(42)
Out[204]: array(42)
In [205]: _.dtype
Out[205]: dtype('int64')
In [206]: np.array(42).data
Out[206]: <memory at 0x7f7dcc054780>
In [207]: bytes(np.array(42).data)
Out[207]: b'*\x00\x00\x00\x00\x00\x00\x00'
In [208]: bytes(np.array([42,43]).data)
Out[208]: b'*\x00\x00\x00\x00\x00\x00\x00+\x00\x00\x00\x00\x00\x00\x00'
数组对象具有属性和一个databuffer
. 该缓冲区存储数据,在本例中为每个元素的 8 字节整数。在bytes(...data)
刚刚产生缓冲器的字节串表示。
tobytes
方法相同:
In [209]: np.array([42,43]).tobytes()
Out[209]: b'*\x00\x00\x00\x00\x00\x00\x00+\x00\x00\x00\x00\x00\x00\x00'
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句