Cách lưu trữ tọa độ trong Python
Xarray cung cấp các quy trình lập chỉ mục cực kỳ linh hoạt, kết hợp các tính năng tốt nhất của NumPy và pandas để chọn dữ liệu Show
Cách cơ bản nhất để truy cập các phần tử của đối tượng In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:4 là sử dụng cú pháp In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:5 của Python, chẳng hạn như In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:6, trong đó In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:7 và In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:8 đều là số nguyên. Vì các đối tượng xarray có thể lưu trữ các tọa độ tương ứng với từng chiều của một mảng, nên cũng có thể lập chỉ mục dựa trên nhãn tương tự như In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:9. Trong lập chỉ mục dựa trên nhãn, vị trí phần tử In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:7 được tra cứu tự động từ các giá trị tọa độ Kích thước của các đối tượng xarray có tên, vì vậy bạn cũng có thể tra cứu kích thước theo tên, thay vì nhớ thứ tự vị trí của chúng Tổng quan nhanh#Tổng cộng, xarray hỗ trợ bốn loại lập chỉ mục khác nhau, như được mô tả bên dưới và được tóm tắt trong bảng này tra cứu thứ nguyên tra cứu chỉ mục cú pháp In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:4 cú pháp In [16]: da.reindex(x=[1.1, 1.5], method="nearest", tolerance=0.2) Out[16]:2 vị trí Theo số nguyên In [16]: da.reindex(x=[1.1, 1.5], method="nearest", tolerance=0.2) Out[16]:3 Không có sẵn vị trí Theo nhãn In [16]: da.reindex(x=[1.1, 1.5], method="nearest", tolerance=0.2) Out[16]:4 Không có sẵn Bằng tên Theo số nguyên In [16]: da.reindex(x=[1.1, 1.5], method="nearest", tolerance=0.2) Out[16]:5 hoặc In [16]: da.reindex(x=[1.1, 1.5], method="nearest", tolerance=0.2) Out[16]:6 In [16]: da.reindex(x=[1.1, 1.5], method="nearest", tolerance=0.2) Out[16]:7 hoặc In [16]: da.reindex(x=[1.1, 1.5], method="nearest", tolerance=0.2) Out[16]:8 Bằng tên Theo nhãn In [16]: da.reindex(x=[1.1, 1.5], method="nearest", tolerance=0.2) Out[16]:9 hoặc In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:60 In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:61 hoặc In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:62 Có thể lập chỉ mục nâng cao hơn cho tất cả các phương thức bằng cách cung cấp đối tượng In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:4 làm chỉ mục. Xem Lập chỉ mục theo vectơ để biết chi tiết. Lập chỉ mục vị trí#Lập chỉ mục một In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:4 trực tiếp hoạt động (hầu hết) giống như đối với các mảng có nhiều mảng, ngoại trừ đối tượng được trả về luôn là một DataArray khác In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:1 Các thuộc tính được duy trì trong tất cả các hoạt động lập chỉ mục Cảnh báo Lập chỉ mục theo vị trí khác với NumPy khi lập chỉ mục với nhiều mảng như In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:65, như được mô tả trong Lập chỉ mục theo vectơ . Xarray cũng hỗ trợ lập chỉ mục dựa trên nhãn, giống như gấu trúc. Bởi vì chúng tôi sử dụng một In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:66 dưới mui xe, lập chỉ mục dựa trên nhãn rất nhanh. Để lập chỉ mục dựa trên nhãn, hãy sử dụng thuộc tính In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:67 In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:5 Trong ví dụ này, phần được chọn là một phần con của mảng trong phạm vi '2000-01-01'. '2000-01-02' dọc theo thời gian tọa độ đầu tiên và với giá trị 'IA' từ không gian tọa độ thứ hai Bạn có thể thực hiện bất kỳ thao tác lập chỉ mục nhãn nào được hỗ trợ bởi pandas, bao gồm lập chỉ mục với từng phần, lát và danh sách/mảng nhãn, cũng như lập chỉ mục với mảng boolean. Giống như gấu trúc, lập chỉ mục dựa trên nhãn trong xarray bao gồm cả giới hạn bắt đầu và giới hạn dừng Đặt giá trị với lập chỉ mục dựa trên nhãn cũng được hỗ trợ In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:6 Lập chỉ mục với tên thứ nguyên #Với tên thứ nguyên, chúng ta không phải dựa vào thứ tự thứ nguyên và có thể sử dụng chúng một cách rõ ràng để cắt dữ liệu. Có hai cách để làm điều này
Các đối số cho các phương thức này có thể là bất kỳ đối tượng nào có thể lập chỉ mục mảng dọc theo thứ nguyên được cung cấp bởi từ khóa, e. g. , nhãn cho một giá trị riêng lẻ, đối tượng Python In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:10 hoặc mảng 1 chiều Ghi chú Chúng tôi rất muốn có thể lập chỉ mục với các tên thứ nguyên được gắn nhãn bên trong dấu ngoặc, nhưng thật không may, Python chưa hỗ trợ lập chỉ mục với các đối số từ khóa như In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:11 Tra cứu hàng xóm gần nhất #Các phương pháp lựa chọn dựa trên nhãn In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:68, In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:13 và In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:14 đều hỗ trợ đối số từ khóa In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:15 và In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:16. Tham số phương thức cho phép tra cứu hàng xóm gần nhất (không chính xác) bằng cách sử dụng các phương thức In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:17, In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:18 hoặc In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:19 In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]: Dung sai giới hạn khoảng cách tối đa cho các kết quả khớp hợp lệ với tra cứu không chính xác ________số 8 Tham số phương thức chưa được hỗ trợ nếu bất kỳ đối số nào của In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:30 là một đối tượng In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:10 In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:6 Tuy nhiên, bạn không cần sử dụng In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:15 để thực hiện việc cắt lát không chính xác. Cắt đã trả về tất cả các giá trị bên trong phạm vi (bao gồm), miễn là các nhãn chỉ mục tăng đều In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:1 Các trục lập chỉ mục với các nhãn đơn điệu giảm dần cũng hoạt động, miễn là các đối số In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:10 hoặc In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:34 cũng đang giảm dần In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:3 Ghi chú Nếu bạn muốn nội suy dọc theo tọa độ thay vì tra cứu các hàng xóm gần nhất, hãy sử dụng In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:35 và In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:36. Xem nội suy để biết chi tiết. Lập chỉ mục tập dữ liệu #Chúng ta cũng có thể sử dụng các phương thức này để lập chỉ mục đồng thời tất cả các biến trong tập dữ liệu, trả về tập dữ liệu mới In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:50 Lập chỉ mục vị trí trên tập dữ liệu không được hỗ trợ vì thứ tự thứ nguyên trong tập dữ liệu hơi mơ hồ (có thể khác nhau giữa các mảng khác nhau). Tuy nhiên, bạn có thể lập chỉ mục bình thường với tên thứ nguyên In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:51 Thả nhãn và kích thước #Phương thức In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:37 trả về một đối tượng mới với các nhãn chỉ mục được liệt kê dọc theo thứ nguyên bị loại bỏ In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:52 In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:38 là cả một phương pháp In [16]: da.reindex(x=[1.1, 1.5], method="nearest", tolerance=0.2) Out[16]:2 và In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:4 Sử dụng In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:501 để xóa kích thước đầy đủ từ Tập dữ liệu. Bất kỳ biến nào có các thứ nguyên này cũng bị loại bỏ In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])]) In [13]: da.sel(x=[1.1, 1.9], method="nearest") Out[13]:53 Tạo mặt nạ với In [12]: da = xr.DataArray([1, 2, 3], [("x", [0, 1, 2])])
In [13]: da.sel(x=[1.1, 1.9], method="nearest")
Out[13]:
|