【发布时间】:2020-02-27 10:22:56
【问题描述】:
我知道 numpy 将数字存储在连续的内存中。那么是否可以服用
a = np.array([127,127,127,127,127,127,127,127], dtype=np.uint8)
'a'的二进制表示是全1
到这里:
b = np.array([72057594037927935], dtype=np.uint64)
以及从 b->a 再次返回。
二进制表示全为 1,但元素的数量合并为一个 64 位 int Numpy 中的表示应该是相同的,只是元数据应该改变。
这听起来像是大步技巧的工作,但我的最佳猜测是:
np.lib.stride_tricks.as_strided(a, shape=(1,), strides=(8,8))
和
np.lib.stride_tricks.as_strided(b, shape=(8,), strides=(1,8))
只得到ValueError:步幅长度和形状不匹配
这只需要只读,所以我没有妄想我需要更改数据。
【问题讨论】:
-
@Divakar uint7 一位,显然 :)
-
另见
a.tobytes()包含\x7f而不是\xff块。 -
复制错误 0b1111111 (7 x1's *8) 我一开始就缺少前导零。但就是这样......我想知道我是否会改变这一点。
标签: python numpy metadata stride