Hướng dẫn what is the maximum size of an array in python? - kích thước tối đa của một mảng trong python là bao nhiêu?

  • Tất cả các cộng đồng
  • Ý tưởng ArcGIS
  • Cơ bản cộng đồng

Có giới hạn kích thước đối với các mảng numpy không? & Nbsp; Tôi đang làm việc trên một tập lệnh sử dụng Arcpy. & NBSP; Tôi đã thử nghiệm nó với một tập hợp con của raster. & Nbsp; Tôi đang sử dụng arcpy.rastertonumpyarray () để tạo một mảng numpy. & Nbsp; Tôi đã có tập lệnh của mình hoạt động theo cách tôi muốn. & NBSP; Bây giờ khi tôi thử và chạy nó với raster đầy đủ của tôi, nó gặp sự cố trên hàm arcpy.rastertonumpyarray (). & Nbsp; Không có tin nhắn, không có gì. & Nbsp; Vì vậy, tôi đoán đó là một điều bộ nhớ. & NBSP; Raster tôi đang cố gắng chuyển đổi thậm chí không phải là Big 185MB. & NBSP; Có ai có manh mối không?

Cảm ơn trước,

Nils

  • Mảng
  • Máy tính để bàn
  • GIS
  • kỉ niệm
  • Numpy
  • rastertonumpyarray

  • Tất cả những bài viết
  • Chủ đề trước
  • Chủ đề tiếp theo

7 trả lời

Vấn đề là Python 32 bit và kích thước của RAM của bạn. Trên hệ thống RAM 8GB và Python 32 bit mà tôi đã quản lý để tạo ra một loạt các số nguyên có kích thước khoảng 9000x9000. Trên hệ thống RAM 3GB, nó là khoảng 5000x5000. Đối với các điểm nổi Raster, nó có thể còn nhỏ hơn.
On the 8GB RAM system and 32-bit Python I managed to create NumPy Array of Integers of size about 9000x9000. On 3GB RAM system it was about 5000x5000.
For floating points raster it may be even smaller.

Có lẽ bạn có thể cố gắng chia raster của bạn thành một số raster?

Nils, Marcin

Vấn đề thậm chí còn tồi tệ hơn. Python 32 bit không được biên dịch LargeAddressAware, có nghĩa là nó sẽ chỉ có thể giải quyết 2GB không gian bộ nhớ có thể định địa chỉ trên mỗi luồng quá trình chạy trên các cửa sổ 32 bit hoặc 64 bit.

Nếu làm việc bên ngoài máy tính để bàn ArcGIS trên hệ điều hành 64 bit, hãy sử dụng Python 64 bit như một môi trường thay thế để xử lý OSGEO-các thư viện GDAL và Numpy trong trường hợp này. Bạn cần phải giữ 32-python làm chính cho các hàm ArcGIS Arcpy chính xác.

Nếu chỉ & nbsp; Cần thêm một chút phòng đầu để chạy mã python 32 bit để hoàn thành, có thể đặt 32 bit Python Executables largeaddress biết không gian bộ nhớ trong mỗi luồng trong hệ điều hành 64 bit. & nbsp; Một số chủ đề diễn đàn với chi tiết.

Stuart

Cảm ơn vì lời khuyên. & NBSP; Tôi chỉ có 4GB bộ nhớ trên hệ thống của mình và raster của tôi đã là một số nguyên (16 bit). & Nbsp; Vì vậy, tôi không nghĩ rằng tôi sẽ có thể lưu bất kỳ bộ nhớ nào bằng cách chuyển đổi raster của tôi. & Nbsp; Tôi đang thực hiện một phân tích loại lân cận nên việc ốp ra raster của tôi thành các mảnh nhỏ hơn không thực sự lý tưởng, nhưng đó có thể là giải pháp duy nhất. & NBSP; Tôi sẽ cố gắng và xem xét Largeaddressware nếu tôi có thời gian.

Cảm ơn một lần nữa, Nils
Nils

Bạn có thực sự cần chuyển đổi raster thành mảng numpy không? Mayby sẽ đủ để sử dụng đại số bản đồ hiện có sẵn trực tiếp từ Arcpy? Kiểm tra trợ giúp của lớp raster.
Mayby it would be enough to use Map Algebra which is now available direct from arcpy?
Check the Raster class help.

Tôi có thể có thể có được với các công cụ SA hiện có và đại số bản đồ cho bây giờ. & NBSP; Nhưng có một điều tôi muốn làm mà tôi không thể làm với các công cụ hiện có, đó là lý do tại sao tôi đang nhìn vào Numpy

Cảm ơn một lần nữa.

Sự trợ giúp cho Rastertonumpyarray (Ví dụ 2) có một ví dụ về cách xử lý dữ liệu của bạn trong gạch để bạn có thể sử dụng xử lý mảng Numpy với các raster quá lớn để xử lý trong một lần.

Xin chào Nils, bạn đã xem xét viết các biểu thức Python Generator chưa? Tôi đã không thử nó nhưng có thể đầu ra mảng numpy có thể được lưu trữ dưới dạng một loại dữ liệu có thể lặp lại?
Have you looked into writing Python generator expressions? I haven't tried it but maybe the NumPy array output could be stored as an iterable data type?

Chỉ cho đến ngày hôm nay, tôi đã bắt gặp chức năng Rastertonumpyarray Arcpy và bắt gặp bài viết của bạn. Gần đây tôi đã hoàn thành việc viết một công cụ tùy chỉnh để chuyển đổi lưới arc/thông tin ESRI thành một tệp văn bản để tôi phải giải quyết các vấn đề về bộ nhớ với các raster lớn. Tôi đã kết thúc bằng cách sử dụng các trình tạo sau khi thử với kiểu dữ liệu danh sách trong các vòng lặp và chức năng numpy. Khía cạnh tiêu cực về công cụ của tôi là trước tiên nó sử dụng Raster để ASCII để tạo lưới ASCII. Nếu hàm arcpy có thể bỏ qua điều đó trong khi "được bao bọc trong" các biểu thức máy phát, hiệu suất của bộ chuyển đổi có thể tăng gấp đôi.

JK

Hướng dẫn what is the maximum size of an array in python? - kích thước tối đa của một mảng trong python là bao nhiêu?

  • Điều khoản sử dụng
  • Hướng dẫn cộng đồng
  • Cơ bản cộng đồng
  • Sự riêng tư
  • Trung tâm Tin tưởng
  • Hợp pháp
  • Liên hệ với ESRI

W3Schools được tối ưu hóa cho việc học và đào tạo. Ví dụ có thể được đơn giản hóa để cải thiện việc đọc và học tập. Hướng dẫn, tài liệu tham khảo và ví dụ được xem xét liên tục để tránh lỗi, nhưng chúng tôi không thể đảm bảo tính chính xác đầy đủ của tất cả các nội dung. Trong khi sử dụng W3Schools, bạn đồng ý đã đọc và chấp nhận các điều khoản sử dụng, cookie và chính sách bảo mật của chúng tôi.

Bản quyền 1999-2022 bởi dữ liệu refsnes. Đã đăng ký Bản quyền. W3Schools được cung cấp bởi W3.CSS.
W3Schools is Powered by W3.CSS.

Kích thước tối đa của một mảng là gì?

Kích thước mảng Java tối đa lý thuyết là 2.147.483.647 yếu tố.Để tìm kích thước của một mảng Java, truy vấn thuộc tính chiều dài của một mảng.2,147,483,647 elements. To find the size of a Java array, query an array's length property.

Kích thước của mảng trong Python là gì?

Sử dụng phương thức Len () để trả về chiều dài của một mảng (số lượng phần tử trong một mảng). (the number of elements in an array).

Kích thước tối đa của mảng numpy là gì?

Không có kích thước mảng tối đa chung trong Numpy.Tất nhiên có, nó là kích thước của NP.Kiểu dữ liệu INTP.Mà cho phiên bản 32 bit chỉ có thể là 32 tỷ .... Of course there is, it is the size of np. intp datatype. Which for 32bit versions may only be 32bits...

Bạn có thể tăng kích thước mảng trong Python không?

Với sự trợ giúp của numpy numpy.resize (), chúng ta có thể thay đổi kích thước của một mảng. resize(), we can resize the size of an array.