Trong Numpy (và Python nói chung, tôi giả sử), làm thế nào để lưu trữ một slice-index, chẳng hạn như (..., 0, :), để vượt qua nó và áp dụng nó cho các mảng khác nhau? Nó sẽ được tốt đẹp để, nói, có thể vượt qua một slice-index đến và đi từ chức năng.Numpy: arr [..., 0 ,:] hoạt động. Nhưng làm thế nào để lưu trữ dữ liệu chứa trong lệnh slice (..., 0, :)?
Trả lời
Python tạo các đối tượng đặc biệt ngoài cú pháp slice, nhưng chỉ bên trong dấu ngoặc vuông để lập chỉ mục. Bạn có thể tạo ra các đối tượng bằng tay (trong trường hợp này, (...,0,:)
là (Ellipsis, 0, slice(None, None, None))
, hoặc bạn có thể tạo một đối tượng helper nhỏ:
class ExtendedSliceMaker(object):
def __getitem__(self, idx):
return idx
>>> ExtendedSliceMaker()[...,0,:]
(Ellipsis, 0, slice(None, None, None))
Tương đương với (...,0,:)
nên ...
>>> myslice = (..., 0, slice(None, None))
>>> myslice
(Ellipsis, 0, slice(None, None, None))
Không, nó không phải là 'lát (0) '; '0' chỉ là một chỉ mục. –
@Thomas: Vâng, đã tự sửa lỗi. – JAB
Tôi nghĩ rằng bạn muốn chỉ làm myslice = lát (1,2) để ví dụ xác định một lát sẽ trở lại các yếu tố thứ 2 (tức là myarray [myslice] == myarray [1: 2])
Điều gọn về Python là bạn thực sự có thể làm cho một lớp học để kiểm tra cách thức các Python sử dụng phương pháp ma thuật __getitem__
để xử lý các hoạt động lập chỉ mục, vì vậy chúng tôi sẽ tạo một lớp quá tải để hiển thị cho chúng tôi những gì đã được truyền vào, khởi tạo lớp và "lập chỉ mục" cho cá thể:
class foo:
def __getitem__(self, index): print index
foo()[...,0,:]
Và kết quả của chúng tôi là:
(Ellipsis, 0, slice(None, None, None))
Ellipsis
và slice
đang dựng sẵn, và chúng ta có thể đọc tài liệu của họ:
help(Ellipsis)
help(slice)
Sử dụng s_ trong NumPy:
In [1]: np.s_[...,0,:]
Out[1]: (Ellipsis, 0, slice(None, None, None))
- 1. Làm cách nào để thay thế {0} nhưng không thay thế {{0}}?
- 2. [0] và [3] hoạt động như thế nào trong ASN1?
- 3. Có chức năng "bounding box" (slice với giá trị khác 0) cho một ndarray trong NumPy không?
- 4. % 0 |% 0 là gì và nó hoạt động như thế nào?
- 5. Làm thế nào để lưu trữ dữ liệu đồ thị trong cơ sở dữ liệu?
- 6. Làm thế nào để lưu trữ cảnh báo MySQL trong cơ sở dữ liệu?
- 7. Làm thế nào là chỉ số trung học 0 của Cassandra được lưu trữ?
- 8. nếu @@ Trancount> 0 không hoạt động
- 9. Làm thế nào để lưu trữ nhiều kiểu dữ liệu trong một mảng?
- 10. Làm thế nào để làm cho highcharts mặc định là 0 cho dữ liệu bị thiếu
- 11. Tại sao `null> = 0 && null <= 0` nhưng không phải` null == 0`?
- 12. cách thực hiện {} trong khi (0) hoạt động trong macro?
- 13. Làm thế nào để lưu trữ dữ liệu trong cookie bằng cách sử dụng php?
- 14. làm thế nào nhiều trường hợp EC2 (tỷ lệ) hoạt động trên một EBS để lưu trữ dữ liệu?
- 15. Lưu trữ một mảng javascript chứa các đối tượng trong cơ sở dữ liệu MYSQL?
- 16. Làm thế nào để lưu trữ một cơ sở dữ liệu bên trong Arduino?
- 17. Dữ liệu cách được lưu trữ trong * .npy là gì?
- 18. làm thế nào để có được tất cả dữ liệu đó được lưu trữ trong jquery.data()
- 19. Hoạt động tại chỗ của numpy (ví dụ: `+ =`) hoạt động như thế nào?
- 20. Làm thế nào để yêu cầu Mathematica thay thế 0 thành công suất 0 bằng 1?
- 21. Tự động điền 0 và 0% trong ô trống Excel
- 22. Sử dụng request.getRemoteAddr() trả về 0: 0: 0: 0: 0: 0: 0: 1
- 23. Làm thế nào để lưu trữ CGRect và những thứ khác trong dữ liệu chính
- 24. Làm thế nào để lưu trữ thông tin "access_control" của Symfony2 trong cơ sở dữ liệu?
- 25. Làm cách nào để lưu trữ dữ liệu MySQL
- 26. Nếu $ variable = 0 không hoạt động
- 27. python pandas/numpy True/False để 1/0 ánh xạ
- 28. Làm cách nào để lưu trữ dữ liệu "giống như"?
- 29. Làm thế nào để x | 0 sàn số trong JavaScript?
- 30. java.lang.StringIndexOutOfBoundsException: index = 0 chiều dài = 0 trong cơ sở dữ liệu SQLite get
Điều này trực tiếp giải quyết vấn đề, giả sử bạn không thực sự quan tâm đến việc biểu diễn hoặc ý nghĩa của nó bởi vì bạn chỉ cần chuyển nó xung quanh để sử dụng trong Numpy. Tôi đã có suy nghĩ tương tự về cơ bản, nhưng cho thấy làm thế nào để khai thác và tìm ra tất cả mọi thứ là :) –