假设我有这个系列:
S = pd.Series([1,1,2,3,5,8,13,21,34])
我想将其转换为矩阵,其中每行将包含最后的N
(比方说:5)值。
所以输出应该是:
[[NaN,NaN,NaN,NaN,NaN],
[NaN,NaN,NaN,NaN, 1],
[NaN,NaN,NaN, 1, 1],
[NaN,NaN, 1, 1, 2],
[NaN, 1, 1, 2, 3],
[ 1, 1, 2, 3, 5],
[ 1, 2, 3, 5, 8],
[ 2, 3, 5, 8, 13],
[ 3, 5, 8, 13, 21]]
我尝试使用rolling
,但没有弄清楚如何获得预期的结果。
答案 0 :(得分:1)
const viewRef = useRef(null as View | null)
useEffect(() => {
if (viewRef.current) {
// TODO: base calculations off of measure
console.log(viewRef.current.measure)
}
}, [viewRef.current])
...
return (
<View
ref={(view) => (viewRef.current = view)}
...
{children}
</View>
)
和shift
concat
答案 1 :(得分:0)
numpy
和pandas
的组合
n = 5
a = [np.nan] + S.tolist()
a_out = np.flip(pd.DataFrame([a[:-i][::-1] for i in range(1,n+1)]).to_numpy(),
(0,1)).T
Out[464]:
array([[nan, nan, nan, nan, nan],
[nan, nan, nan, nan, 1.],
[nan, nan, nan, 1., 1.],
[nan, nan, 1., 1., 2.],
[nan, 1., 1., 2., 3.],
[ 1., 1., 2., 3., 5.],
[ 1., 2., 3., 5., 8.],
[ 2., 3., 5., 8., 13.],
[ 3., 5., 8., 13., 21.]])
或者纯粹是python
和numpy
n = 5
a = S.tolist()
a_out = np.flip([a[:-i][::-1] + [np.nan]*i for i in range(1,n+1)], (0,1)).T
Out[476]:
array([[nan, nan, nan, nan, nan],
[nan, nan, nan, nan, 1.],
[nan, nan, nan, 1., 1.],
[nan, nan, 1., 1., 2.],
[nan, 1., 1., 2., 3.],
[ 1., 1., 2., 3., 5.],
[ 1., 2., 3., 5., 8.],
[ 2., 3., 5., 8., 13.],
[ 3., 5., 8., 13., 21.]])