2012-12-03 26 views
10

Tôi muốn sử dụng numpy.diff trên một chuỗi gấu trúc. Tôi có đúng là đây là lỗi không? Hay tôi làm sai?khác biệt nhiều trên một chú gấu trúc Dòng

In [163]: s = Series(np.arange(10)) 

In [164]: np.diff(s) 
Out[164]: 
0 NaN 
1  0 
2  0 
3  0 
4  0 
5  0 
6  0 
7  0 
8  0 
9 NaN 

In [165]: np.diff(np.arange(10)) 
Out[165]: array([1, 1, 1, 1, 1, 1, 1, 1, 1]) 

Tôi đang sử dụng gấu trúc 0.9.1rc1, numpy 1.6.1.

Trả lời

10

Pandas thực hiện diff như vậy:

In [3]: s = pd.Series(np.arange(10)) 

In [4]: s.diff() 
Out[4]: 
0 NaN 
1  1 
2  1 
3  1 
4  1 
5  1 
6  1 
7  1 
8  1 
9  1 

Sử dụng np.diff trực tiếp:

In [7]: np.diff(s.values) 
Out[7]: array([1, 1, 1, 1, 1, 1, 1, 1, 1]) 

In [8]: np.diff(np.array(s)) 
Out[8]: array([1, 1, 1, 1, 1, 1, 1, 1, 1]) 

Vậy tại sao không np.diff(s) làm việc? Vì np đang lấy np.asanyarray() của bộ truyện trước khi tìm kiếm diff. Giống như vậy:

In [25]: a = np.asanyarray(s) 

In [26]: a 
Out[26]: 
0 0 
1 1 
2 2 
3 3 
4 4 
5 5 
6 6 
7 7 
8 8 
9 9 

In [27]: np.diff(a) 
Out[27]: 
0 NaN 
1  0 
2  0 
3  0 
4  0 
5  0 
6  0 
7  0 
8  0 
9 NaN 
Các vấn đề liên quan