我正在尝试使用numpy.strided_tricks来重塑numpy数组。我正在遵循以下指南:https://dev59.com/pHE95IYBdhLWcg3wCJbk#2487551
我的用例非常相似,不同之处在于我需要步幅为3。
给定这个数组:
给定这个数组:
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
我希望能获得:
array([[1, 2, 3],
[2, 3, 4],
[3, 4, 5],
[4, 5, 6],
[5, 6, 7],
[6, 7, 8],
[7, 8, 9]])
以下是我尝试过的内容:
import numpy as np
as_strided = np.lib.stride_tricks.as_strided
a = np.arange(1, 10)
as_strided(a, (len(a) - 2, 3), (3, 3))
array([[ 1, 2199023255552, 131072],
[ 2199023255552, 131072, 216172782113783808],
[ 131072, 216172782113783808, 12884901888],
[216172782113783808, 12884901888, 768],
[ 12884901888, 768, 1125899906842624],
[ 768, 1125899906842624, 67108864],
[ 1125899906842624, 67108864, 4]])
我非常确定我完全按照示例操作,但显然并不是。我哪里出了问题?
as_strided
允许您访问数组数据缓冲区外的字节。 它不检查步幅和形状是否有效。 使用时请小心。 - hpaulj