2013-02-17 22 views

Trả lời

24

Bạn có thể truy cập nó thông qua "quấn" item datetime:

>>> dt.item().total_seconds() 
65.0 

Giải thích: đây là một dtarray scalar trong numpy, mà là một mảng không cấp bậc hoặc mảng 0-chiều. Vì vậy, bạn sẽ tìm thấy các dt ở đây cũng có tất cả các phương pháp một ndarray sở hữu, và bạn có thể làm ví dụ dt.astype('float'). Nhưng nó kết thúc tốt đẹp một đối tượng python, trong trường hợp này là đối tượng datetime.timedelta.

Để có được vô hướng ban đầu, bạn có thể sử dụng dt.item(). Để chỉ số vô hướng mảng bạn có thể sử dụng cú pháp hơi kỳ lạ của GetItem sử dụng một tuple trống:

>>> dt[()] 
array(datetime.timedelta(0, 65), dtype='timedelta64[s]') 

này nên làm việc trong tất cả các phiên bản của NumPy, nhưng nếu bạn đang sử dụng v1.7 NumPy + nó có thể là tốt hơn để sử dụng API datetime numpy mới hơn trực tiếp như được giải thích trong câu trả lời từ J.F. Sebastien tại đây.

+0

Cảm ơn, mà làm việc. Bạn có thể giải thích tại sao dt.seconds không hoạt động? – sashkello

+4

Đó là 'datetime.timedelta' có thuộc tính có tên như vậy, không phải là' numpy.timedelta64'. Tôi không biết tại sao lại thực hiện một cách gắt gỏng như vậy, có lẽ ai đó khác có thể trả lời .. – wim

54

Để có được số giây từ numpy.timedelta64() đối tượng sử dụng numpy 1.7 experimental datetime API:

seconds = dt/np.timedelta64(1, 's') 
+0

Chúng tôi có thể sử dụng các phiên bản khác nhau? Tôi có 'TypeError: chức năng mất nhiều nhất 1 đối số (2 cho trước)' khi cố gắng 'np.timedelta64 (1, 's')' – wim

+4

@wim: yes. [1,6 và 1,7 API khác nhau] (http://docs.scipy.org/doc/numpy-dev/reference/arrays.datetime.html#datetime-and-timedelta-armeticmetic). – jfs

+6

Câu trả lời này cũng hoạt động trên các mảng. – Yariv

Các vấn đề liên quan