Hướng dẫn how do you save an array in python? - làm thế nào để bạn lưu một mảng trong python?

numpy.save [file, mảng, allow_pickle = true, fix_imports = true] [nguồn]#save[file, arr, allow_pickle=True, fix_imports=True][source]#

Lưu một mảng vào một tệp nhị phân ở định dạng .npy numpy.

Tham số FileFile, Str hoặc Pathlib.Pathfilefile, str, or pathlib.Path

Tệp hoặc tên tệp mà dữ liệu được lưu. Nếu tệp là một đối tượng tệp, thì tên tệp không thay đổi. Nếu tệp là một chuỗi hoặc đường dẫn, tiện ích mở rộng .npy sẽ được gắn vào tên tệp nếu nó chưa có.

arrarray_likearray_like

Dữ liệu mảng sẽ được lưu.

Cho phép_picklebool, tùy chọnbool, optional

Cho phép lưu các mảng đối tượng bằng dưa chua python. Lý do để không bị dưa chua bao gồm bảo mật [tải dữ liệu dưa chua có thể thực thi mã tùy ý] và tính di động [ví dụ: các đối tượng ngâm có thể không được tải trên các cài đặt python khác nhau, ví dụ nếu các đối tượng được lưu trữ yêu cầu các thư viện không có sẵn và không phải tất cả dữ liệu dồn dưa đều tương thích giữa Python 2 và Python 3]. Mặc định: Đúng

FIX_IMPORTSBOOL, Tùy chọnbool, optional

Chỉ hữu ích trong việc buộc các đối tượng trong các mảng đối tượng trên Python 3 được ngâm theo cách tương thích Python 2. Nếu Fix_Imports là đúng, Pickle sẽ cố gắng ánh xạ các tên Python 3 mới cho các tên mô -đun cũ được sử dụng trong Python 2, do đó luồng dữ liệu Pickle có thể đọc được với Python 2.

Ghi chú

Để biết mô tả về định dạng .npy, xem numpy.lib.format.

Bất kỳ dữ liệu nào được lưu vào tệp đều được nối vào cuối tệp.

Ví dụ

>>> from tempfile import TemporaryFile
>>> outfile = TemporaryFile[]

>>> x = np.arange[10]
>>> np.save[outfile, x]

>>> _ = outfile.seek[0] # Only needed here to simulate closing & reopening file
>>> np.load[outfile]
array[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]

>>> with open['test.npy', 'wb'] as f:
...     np.save[f, np.array[[1, 2]]]
...     np.save[f, np.array[[1, 3]]]
>>> with open['test.npy', 'rb'] as f:
...     a = np.load[f]
...     b = np.load[f]
>>> print[a, b]
# [1 2] [1 3]

Câu trả lời ngắn gọn là: Bạn nên sử dụng

>>> x = np.arange[10]
>>> np.save[outfile, x]
0 và
>>> x = np.arange[10]
>>> np.save[outfile, x]
1.

Ưu điểm của việc sử dụng các chức năng này là chúng được tạo bởi các nhà phát triển của Thư viện Numpy và chúng đã hoạt động [cộng với khả năng được tối ưu hóa độc đáo cho tốc độ xử lý].

Ví dụ:

import numpy as np
from pathlib import Path

path = Path['~/data/tmp/'].expanduser[]
path.mkdir[parents=True, exist_ok=True]

lb,ub = -1,1
num_samples = 5
x = np.random.uniform[low=lb,high=ub,size=[1,num_samples]]
y = x**2 + x + 2

np.save[path/'x', x]
np.save[path/'y', y]

x_loaded = np.load[path/'x.npy']
y_load = np.load[path/'y.npy']

print[x is x_loaded] # False
print[x == x_loaded] # [[ True  True  True  True  True]]

Câu trả lời mở rộng:

Cuối cùng, nó thực sự phụ thuộc vào nhu cầu của bạn vì bạn cũng có thể lưu nó ở định dạng có thể đọc được của con người [xem kết xuất một mảng numpy vào tệp CSV] hoặc thậm chí với các thư viện khác nếu các tệp của bạn cực kỳ lớn [xem cách tốt nhất để bảo tồn Numpy Mảng trên đĩa cho một cuộc thảo luận mở rộng].

Tuy nhiên, [tạo một bản mở rộng vì bạn sử dụng từ "đúng" trong câu hỏi của bạn] Tôi vẫn nghĩ rằng sử dụng hàm numpy ra khỏi hộp [và hầu hết các mã!] Rất có thể đáp ứng hầu hết các nhu cầu của người dùng. Lý do quan trọng nhất là nó đã hoạt động. Cố gắng sử dụng một cái gì đó khác vì bất kỳ lý do nào khác có thể đưa bạn vào một lỗ thỏ dài bất ngờ để tìm ra lý do tại sao nó không hoạt động và buộc nó hoạt động.it already works. Trying to use something else for any other reason might take you on an unexpectedly LONG rabbit hole to figure out why it doesn't work and force it work.

Lấy ví dụ cố gắng để lưu nó với dưa chua. Tôi đã thử điều đó để giải trí và tôi mất ít nhất 30 phút để nhận ra rằng Pickle sẽ không lưu đồ của tôi trừ khi tôi mở và đọc tệp ở chế độ byte với

>>> x = np.arange[10]
>>> np.save[outfile, x]
2. Phải mất thời gian để google vấn đề, kiểm tra các giải pháp tiềm năng, hiểu thông báo lỗi, v.v ... đó là một chi tiết nhỏ, nhưng thực tế là nó đã yêu cầu tôi mở một tệp những điều phức tạp theo những cách bất ngờ. Để thêm vào đó, nó yêu cầu tôi đọc lại điều này [btw là loại khó hiểu]: sự khác biệt giữa các chế độ A, A+, W, W+và R+trong hàm mở tích hợp ?.

Vì vậy, nếu có một giao diện đáp ứng nhu cầu của bạn, hãy sử dụng nó trừ khi bạn có [rất] lý do chính đáng [ví dụ: khả năng tương thích với MATLAB hoặc vì một lý do nào đó, bạn thực sự muốn đọc tệp và in trong Python thực sự không đáp ứng nhu cầu của bạn, có thể là nghi vấn]. Hơn nữa, rất có thể nếu bạn cần tối ưu hóa nó, bạn sẽ tìm ra sau này [thay vì dành nhiều thời gian để gỡ lỗi những thứ vô dụng như mở một tệp numpy đơn giản].very] good reason [e.g. compatibility with matlab or for some reason your really want to read the file and printing in Python really doesn't meet your needs, which might be questionable]. Furthermore, most likely if you need to optimize it, you'll find out later down the line [rather than spending ages debugging useless stuff like opening a simple Numpy file].

Vì vậy, sử dụng giao diện/numpy cung cấp. Nó có thể không hoàn hảo, nhưng rất có thể là tốt, đặc biệt là đối với một thư viện đã tồn tại miễn là numpy.. It might not be perfect, but it's most likely fine, especially for a library that's been around as long as Numpy.

Tôi đã chi tiêu dữ liệu tiết kiệm và tải với Numpy theo một loạt các cách để vui chơi với nó. Hi vọng điêu nay co ich!

import numpy as np
import pickle
from pathlib import Path

path = Path['~/data/tmp/'].expanduser[]
path.mkdir[parents=True, exist_ok=True]

lb,ub = -1,1
num_samples = 5
x = np.random.uniform[low=lb,high=ub,size=[1,num_samples]]
y = x**2 + x + 2

# using save [to npy], savez [to npz]
np.save[path/'x', x]
np.save[path/'y', y]
np.savez[path/'db', x=x, y=y]
with open[path/'db.pkl', 'wb'] as db_file:
    pickle.dump[obj={'x':x, 'y':y}, file=db_file]

## using loading npy, npz files
x_loaded = np.load[path/'x.npy']
y_load = np.load[path/'y.npy']
db = np.load[path/'db.npz']
with open[path/'db.pkl', 'rb'] as db_file:
    db_pkl = pickle.load[db_file]

print[x is x_loaded]
print[x == x_loaded]
print[x == db['x']]
print[x == db_pkl['x']]
print['done']

Một số nhận xét về những gì tôi đã học được:

  • >>> x = np.arange[10]
    >>> np.save[outfile, x]
    
    0 Như mong đợi, điều này đã nén nó tốt [xem //stackoverflow.com/a/55750128/1601580], hoạt động ngoài hộp mà không cần mở tệp. Lau dọn. Dễ. Có hiệu quả. Sử dụng nó.
  • >>> x = np.arange[10]
    >>> np.save[outfile, x]
    
    4 sử dụng định dạng không nén [xem tài liệu] lưu một số mảng vào một tệp duy nhất ở định dạng
    >>> x = np.arange[10]
    >>> np.save[outfile, x]
    
    5 không nén. Nếu bạn quyết định sử dụng điều này [bạn đã được cảnh báo về việc đi khỏi giải pháp tiêu chuẩn, vì vậy hãy mong đợi lỗi!] Bạn có thể phát hiện ra rằng bạn cần sử dụng tên đối số để lưu nó, trừ khi bạn muốn sử dụng tên mặc định. Vì vậy, đừng sử dụng cái này nếu lần đầu tiên đã hoạt động [hoặc bất kỳ công việc nào sử dụng điều đó!]
  • Pickle cũng cho phép thực thi mã tùy ý. Một số người có thể không muốn sử dụng điều này vì lý do bảo mật.
  • Các tập tin có thể đọc được của con người là tốn kém để làm, vv có lẽ không đáng.
  • Có một cái gì đó gọi là
    >>> x = np.arange[10]
    >>> np.save[outfile, x]
    
    6 cho các tệp lớn. Mát mẻ! //stackoverflow.com/a/9619713/1601580

Lưu ý rằng đây không phải là một câu trả lời đầy đủ. Nhưng đối với các tài nguyên khác, hãy kiểm tra điều này:

  • Đối với dưa chua [đoán câu trả lời hàng đầu là không sử dụng dưa chua, sử dụng
    >>> x = np.arange[10]
    >>> np.save[outfile, x]
    
    0]: Lưu mảng numpy bằng dưa
  • Đối với các tệp lớn [câu trả lời tuyệt vời! So sánh kích thước lưu trữ, lưu và hơn thế nữa!]: //stackoverflow.com/a/41425878/1601580
  • Đối với Matlab [chúng ta phải chấp nhận Matlab có một số âm mưu đẹp của freakin!]
  • Để lưu ở định dạng có thể đọc được của con người: đổ một mảng numpy vào tệp CSV

Làm cách nào để lưu và đọc một mảng trong Python?

hàm savetxt [] lưu một mảng numpy vào tệp văn bản và hàm numpy.loadtxt [] tải một mảng numpy từ một tệp văn bản trong python. Numpy. Hàm lưu [] lấy tên của tệp văn bản, mảng sẽ được lưu và định dạng mong muốn làm tham số đầu vào và lưu mảng bên trong tệp văn bản. loadtxt[] function loads a NumPy array from a text file in Python. The numpy. save[] function takes the name of the text file, the array to be saved, and the desired format as input parameters and saves the array inside the text file.

Làm cách nào để lưu một mảng dưới dạng tệp văn bản trong Python?

Sử dụng Numpy ...
print[an_array].
a_file = open ["test.txt", "w"].
cho hàng trong an_array:.
NP.Savetxt [a_file, hàng].
một tập tin.đóng [] Đóng `a_file`.

Làm thế nào để bạn tạo một mảng trong Python?

Trong Python, bạn có thể tạo các kiểu dữ liệu mới, được gọi là mảng bằng gói Numpy.Các mảng Numpy được tối ưu hóa cho các phân tích số và chỉ chứa một loại dữ liệu duy nhất.Trước tiên, bạn nhập Numpy và sau đó sử dụng hàm mảng [] để tạo một mảng.Hàm mảng [] lấy một danh sách làm đầu vào.You first import NumPy and then use the array[] function to create an array. The array[] function takes a list as an input.

Làm cách nào để lưu một mảng làm danh sách?

Cách chuyển đổi danh sách thành một mảng trong Python..
Sử dụng numpy.array [] Chức năng này của thư viện Numpy lấy một danh sách làm đối số và trả về một mảng chứa tất cả các yếu tố của danh sách.Xem ví dụ dưới đây: Nhập Numpy dưới dạng NP.....
Sử dụng Numpy.AsArray [] Hàm này gọi hàm numpy.array [] bên trong chính nó ..

Bài Viết Liên Quan

Chủ Đề