【发布时间】:2017-01-07 10:20:48
【问题描述】:
考虑数组a
import numpy as np
import pandas as pd
np.random.seed([3,1415])
a = np.random.randint(100, size=10)
print(a)
[11 98 74 90 15 55 13 11 13 26]
我正在使用as_strided from numpy.lib.stride_tricks import as_strided
当我使用它来提供如下滚动窗口时
as_strided(a, shape=(len(a), 5), strides=(8, -8))
[[11 0 0 0 0]
[98 11 0 0 0]
[74 98 11 0 0]
[90 74 98 11 0]
[15 90 74 98 11]
[55 15 90 74 98]
[13 55 15 90 74]
[11 13 55 15 90]
[13 11 13 55 15]
[26 13 11 13 55]]
这几乎是完美的。我想在顶部三角形中使用 np.nan 而不是零。
我想要这个
[[ 11. nan nan nan nan]
[ 98. 11. nan nan nan]
[ 74. 98. 11. nan nan]
[ 90. 74. 98. 11. nan]
[ 15. 90. 74. 98. 11.]
[ 55. 15. 90. 74. 98.]
[ 13. 55. 15. 90. 74.]
[ 11. 13. 55. 15. 90.]
[ 13. 11. 13. 55. 15.]
[ 26. 13. 11. 13. 55.]]
有没有方便的方法告诉as_strided 用np.nan 代替
【问题讨论】:
-
您得到的那些零超出了
a's内存空间,因此可以是任何东西。在您的情况下,它恰好是零。也与此相关 - stackoverflow.com/questions/40683601 -
@Divakar 吓人。好东西我问了。 :-)