Hướng dẫn python save array to json - python lưu mảng vào json

Tôi thường xuyên "jsonify" np.arrays. Hãy thử sử dụng phương thức ".tolist ()" trên các mảng trước, như thế này:

import numpy as np
import codecs, json 

a = np.arange(10).reshape(2,5) # a 2 by 5 array
b = a.tolist() # nested lists with same data, indices
file_path = "/path.json" ## your path variable
json.dump(b, codecs.open(file_path, 'w', encoding='utf-8'), 
          separators=(',', ':'), 
          sort_keys=True, 
          indent=4) ### this saves the array in .json format

Để "Unjsonify" sử dụng mảng:

obj_text = codecs.open(file_path, 'r', encoding='utf-8').read()
b_new = json.loads(obj_text)
a_new = np.array(b_new)

Hướng dẫn python save array to json - python lưu mảng vào json

David Hempy

4.6542 Huy hiệu vàng38 Huy hiệu bạc61 Huy hiệu Đồng2 gold badges38 silver badges61 bronze badges

Đã trả lời ngày 29 tháng 9 năm 2015 lúc 17:44Sep 29, 2015 at 17:44

Travellingbonestravelingbonestravelingbones

7.4316 Huy hiệu vàng34 Huy hiệu bạc41 Huy hiệu đồng6 gold badges34 silver badges41 bronze badges

9

Lưu trữ dưới dạng json một numpy.ndarray hoặc bất kỳ thành phần danh sách lồng nhau nào.

class NumpyEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, np.ndarray):
            return obj.tolist()
        return json.JSONEncoder.default(self, obj)

a = np.array([[1, 2, 3], [4, 5, 6]])
print(a.shape)
json_dump = json.dumps({'a': a, 'aa': [2, (2, 3, 4), a], 'bb': [2]}, 
                       cls=NumpyEncoder)
print(json_dump)

Sẽ đầu ra:

(2, 3)
{"a": [[1, 2, 3], [4, 5, 6]], "aa": [2, [2, 3, 4], [[1, 2, 3], [4, 5, 6]]], "bb": [2]}

Để khôi phục từ JSON:

json_load = json.loads(json_dump)
a_restored = np.asarray(json_load["a"])
print(a_restored)
print(a_restored.shape)

Sẽ đầu ra:

[[1 2 3]
 [4 5 6]]
(2, 3)

Hướng dẫn python save array to json - python lưu mảng vào json

David Hempy

4.6542 Huy hiệu vàng38 Huy hiệu bạc61 Huy hiệu Đồng2 gold badges38 silver badges61 bronze badges

Đã trả lời ngày 29 tháng 9 năm 2015 lúc 17:44Dec 4, 2017 at 4:58

6

Travellingbonestravelingbones

import json
import numpy as np

class NumpyEncoder(json.JSONEncoder):
    """ Special json encoder for numpy types """
    def default(self, obj):
        if isinstance(obj, np.integer):
            return int(obj)
        elif isinstance(obj, np.floating):
            return float(obj)
        elif isinstance(obj, np.ndarray):
            return obj.tolist()
        return json.JSONEncoder.default(self, obj)

dumped = json.dumps(data, cls=NumpyEncoder)

with open(path, 'w') as f:
    json.dump(dumped, f)

7.4316 Huy hiệu vàng34 Huy hiệu bạc41 Huy hiệu đồng

Lưu trữ dưới dạng json một numpy.ndarray hoặc bất kỳ thành phần danh sách lồng nhau nào.Apr 5, 2018 at 16:28

Hướng dẫn python save array to json - python lưu mảng vào json

tsveti_ikotsveti_ikotsveti_iko

Sẽ đầu ra:3 gold badges39 silver badges37 bronze badges

6

Để khôi phục từ JSON:

import pandas as pd
pd.Series(your_array).to_json(orient='values')

Đã trả lời ngày 4 tháng 12 năm 2017 lúc 4:58Jun 26, 2017 at 1:52

Hướng dẫn python save array to json - python lưu mảng vào json

Tôi đã tìm thấy giải pháp tốt nhất nếu bạn có các mảng Numpy trong một từ điển:John Zwinck

Cảm ơn anh chàng này.33 gold badges310 silver badges423 bronze badges

2

Đã trả lời ngày 5 tháng 4 năm 2018 lúc 16:28

5,8083 Huy hiệu vàng39 Huy hiệu bạc37 Huy hiệu đồng

Bạn có thể sử dụng gấu trúc:

import numpy as np

def default(obj):
    if type(obj).__module__ == np.__name__:
        if isinstance(obj, np.ndarray):
            return obj.tolist()
        else:
            return obj.item()
    raise TypeError('Unknown type:', type(obj))

dumped = json.dumps(data, default=default)

Đã trả lời ngày 26 tháng 6 năm 2017 lúc 1:52Oct 2, 2018 at 8:32

John Zwinckjohn Zwinckmoshevi

229K33 Huy hiệu vàng310 Huy hiệu bạc423 Huy hiệu đồng5 gold badges28 silver badges46 bronze badges

3

Sử dụng

class NumpyEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, np.ndarray):
            return obj.tolist()
        return json.JSONEncoder.default(self, obj)

a = np.array([[1, 2, 3], [4, 5, 6]])
print(a.shape)
json_dump = json.dumps({'a': a, 'aa': [2, (2, 3, 4), a], 'bb': [2]}, 
                       cls=NumpyEncoder)
print(json_dump)
2
class NumpyEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, np.ndarray):
            return obj.tolist()
        return json.JSONEncoder.default(self, obj)

a = np.array([[1, 2, 3], [4, 5, 6]])
print(a.shape)
json_dump = json.dumps({'a': a, 'aa': [2, (2, 3, 4), a], 'bb': [2]}, 
                       cls=NumpyEncoder)
print(json_dump)
3 kwarg:

  • Mặc định nên là một hàm được gọi cho các đối tượng có thể được tuần tự hóa. ... hoặc nâng một kiểu người
  • Trong chức năng
    class NumpyEncoder(json.JSONEncoder):
        def default(self, obj):
            if isinstance(obj, np.ndarray):
                return obj.tolist()
            return json.JSONEncoder.default(self, obj)
    
    a = np.array([[1, 2, 3], [4, 5, 6]])
    print(a.shape)
    json_dump = json.dumps({'a': a, 'aa': [2, (2, 3, 4), a], 'bb': [2]}, 
                           cls=NumpyEncoder)
    print(json_dump)
    
    3, hãy kiểm tra xem đối tượng có phải từ mô -đun không, nếu vậy sử dụng
    class NumpyEncoder(json.JSONEncoder):
        def default(self, obj):
            if isinstance(obj, np.ndarray):
                return obj.tolist()
            return json.JSONEncoder.default(self, obj)
    
    a = np.array([[1, 2, 3], [4, 5, 6]])
    print(a.shape)
    json_dump = json.dumps({'a': a, 'aa': [2, (2, 3, 4), a], 'bb': [2]}, 
                           cls=NumpyEncoder)
    print(json_dump)
    
    5 cho
    class NumpyEncoder(json.JSONEncoder):
        def default(self, obj):
            if isinstance(obj, np.ndarray):
                return obj.tolist()
            return json.JSONEncoder.default(self, obj)
    
    a = np.array([[1, 2, 3], [4, 5, 6]])
    print(a.shape)
    json_dump = json.dumps({'a': a, 'aa': [2, (2, 3, 4), a], 'bb': [2]}, 
                           cls=NumpyEncoder)
    print(json_dump)
    
    6 hoặc sử dụng
    class NumpyEncoder(json.JSONEncoder):
        def default(self, obj):
            if isinstance(obj, np.ndarray):
                return obj.tolist()
            return json.JSONEncoder.default(self, obj)
    
    a = np.array([[1, 2, 3], [4, 5, 6]])
    print(a.shape)
    json_dump = json.dumps({'a': a, 'aa': [2, (2, 3, 4), a], 'bb': [2]}, 
                           cls=NumpyEncoder)
    print(json_dump)
    
    7 cho bất kỳ loại cụ thể nào khác.
  • Đã trả lời ngày 2 tháng 10 năm 2018 lúc 8:32
  • Moshevimoshevi

4.3115 Huy hiệu vàng28 Huy hiệu bạc46 Huy hiệu đồng

Điều này không được hỗ trợ theo mặc định, nhưng bạn có thể làm cho nó hoạt động khá dễ dàng! Có một số điều bạn sẽ muốn mã hóa nếu bạn muốn chính xác dữ liệu trở lại:

pip install json-tricks

Bản thân dữ liệu mà bạn có thể nhận được với

class NumpyEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, np.ndarray):
            return obj.tolist()
        return json.JSONEncoder.default(self, obj)

a = np.array([[1, 2, 3], [4, 5, 6]])
print(a.shape)
json_dump = json.dumps({'a': a, 'aa': [2, (2, 3, 4), a], 'bb': [2]}, 
                       cls=NumpyEncoder)
print(json_dump)
8 như @TravelingBones đã đề cập. Đôi khi điều này có thể đủ tốt.

obj_text = codecs.open(file_path, 'r', encoding='utf-8').read()
b_new = json.loads(obj_text)
a_new = np.array(b_new)
0

Loại dữ liệu. Tôi cảm thấy điều này là quan trọng trong một số trường hợp.Sep 19, 2017 at 17:56

Hướng dẫn python save array to json - python lưu mảng vào json

Kích thước (không nhất thiết là 2D), có thể được lấy từ trên nếu bạn cho rằng đầu vào thực sự luôn luôn là một lưới 'hình chữ nhật'.Mark

Thứ tự bộ nhớ (hàng hoặc cột-major). Điều này không thường xuyên quan trọng, nhưng đôi khi nó (ví dụ: hiệu suất), vậy tại sao không tiết kiệm mọi thứ?6 gold badges105 silver badges124 bronze badges

Hơn nữa, mảng numpy của bạn có thể là một phần của cấu trúc dữ liệu của bạn, ví dụ: Bạn có một danh sách với một số ma trận bên trong. Cho rằng bạn có thể sử dụng một bộ mã hóa tùy chỉnh mà về cơ bản thực hiện các điều trên.

obj_text = codecs.open(file_path, 'r', encoding='utf-8').read()
b_new = json.loads(obj_text)
a_new = np.array(b_new)
1

Điều này là đủ để thực hiện một giải pháp. Hoặc bạn có thể sử dụng JSON-Tricks, điều này (và hỗ trợ nhiều loại khác) (từ chối trách nhiệm: Tôi đã thực hiện nó).Apr 12, 2017 at 12:19

Hướng dẫn python save array to json - python lưu mảng vào json

sau đóJLT

Đã trả lời ngày 19 tháng 9 năm 2017 lúc 17:568 silver badges15 bronze badges

Markmark

obj_text = codecs.open(file_path, 'r', encoding='utf-8').read()
b_new = json.loads(obj_text)
a_new = np.array(b_new)
2

17.7K6 Huy hiệu vàng105 Huy hiệu bạc124 Huy hiệu đồngAug 21, 2018 at 13:01

Tôi đã có một vấn đề tương tự với một từ điển lồng nhau với một số numpy.ndarrays trong đó.steco

Đã trả lời ngày 12 tháng 4 năm 2017 lúc 12:1912 silver badges16 bronze badges

Jltjlt

6828 Huy hiệu bạc15 Huy hiệu Đồng

Bạn cũng có thể sử dụng đối số

class NumpyEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, np.ndarray):
            return obj.tolist()
        return json.JSONEncoder.default(self, obj)

a = np.array([[1, 2, 3], [4, 5, 6]])
print(a.shape)
json_dump = json.dumps({'a': a, 'aa': [2, (2, 3, 4), a], 'bb': [2]}, 
                       cls=NumpyEncoder)
print(json_dump)
3 ví dụ: ví dụ:

Đã trả lời ngày 21 tháng 8 năm 2018 lúc 13:01

Stecosteco

obj_text = codecs.open(file_path, 'r', encoding='utf-8').read()
b_new = json.loads(obj_text)
a_new = np.array(b_new)
3

1.16512 Huy hiệu bạc16 Huy hiệu đồng

obj_text = codecs.open(file_path, 'r', encoding='utf-8').read()
b_new = json.loads(obj_text)
a_new = np.array(b_new)
4

Ngoài ra, một số thông tin rất thú vị hơn nữa về danh sách so với các mảng trong Python ~> Danh sách Python so với Array - Khi nào nên sử dụng?

Có thể lưu ý rằng một khi tôi chuyển đổi mảng của mình thành một danh sách trước khi lưu nó trong tệp JSON, trong việc triển khai của tôi ngay bây giờ, khi tôi đọc tệp JSON đó để sử dụng sau này, tôi có thể tiếp tục sử dụng nó trong một biểu mẫu danh sách (như trái ngược với việc chuyển đổi nó trở lại một mảng).Mar 18, 2016 at 22:03

ntk4ntk4ntk4

Và thực sự trông đẹp hơn (theo ý kiến ​​của tôi) trên màn hình dưới dạng danh sách (dấu phẩy đã tách biệt) so với một mảng (không phải là người đồng thời) theo cách này.1 gold badge13 silver badges17 bronze badges

Sử dụng phương thức .ToList () của @TravelingBones ở trên, tôi đã sử dụng như vậy (bắt một vài lỗi tôi cũng đã tìm thấy):

obj_text = codecs.open(file_path, 'r', encoding='utf-8').read()
b_new = json.loads(obj_text)
a_new = np.array(b_new)
5

Lưu từ điểnJun 1, 2020 at 5:30

Hướng dẫn python save array to json - python lưu mảng vào json

1

Đọc từ điển

obj_text = codecs.open(file_path, 'r', encoding='utf-8').read()
b_new = json.loads(obj_text)
a_new = np.array(b_new)
6

Hi vọng điêu nay co ich!Jan 9, 2017 at 12:08

Đã trả lời ngày 18 tháng 3 năm 2016 lúc 22:03Roei Bahumi

1.2291 Huy hiệu vàng13 Huy hiệu bạc17 Huy hiệu đồng2 gold badges18 silver badges19 bronze badges

Sử dụng numpyencoder, nó sẽ xử lý kết xuất JSON thành công.
There is hickle which is faster than pickle and easier.
I tried to save and read it in pickle dump but while reading there were lot of problems and wasted an hour and still didn't find solution though I was working on my own data to create a chat bot.

Đã trả lời ngày 1 tháng 6 năm 2020 lúc 5:30

obj_text = codecs.open(file_path, 'r', encoding='utf-8').read()
b_new = json.loads(obj_text)
a_new = np.array(b_new)
7

Dưới đây là một triển khai hoạt động cho tôi và xóa tất cả các NAN (giả sử đây là những đối tượng đơn giản (danh sách hoặc dict)):

obj_text = codecs.open(file_path, 'r', encoding='utf-8').read()
b_new = json.loads(obj_text)
a_new = np.array(b_new)
8

Hướng dẫn python save array to json - python lưu mảng vào json

zx485

Đã trả lời ngày 9 tháng 1 năm 2017 lúc 12:0828 gold badges51 silver badges57 bronze badges

Roei Bahumiroei BahumiJul 13, 2018 at 20:23

3.0732 Huy hiệu vàng18 Huy hiệu bạc19 Huy hiệu đồngKS HARSHA

Đây là một câu trả lời khác, nhưng điều này có thể giúp giúp những người đang cố gắng lưu dữ liệu và sau đó đọc lại. Có Hickle nhanh hơn Pickle và dễ dàng hơn. Tôi đã cố gắng lưu và đọc nó trong Dumple Dump nhưng trong khi đọc có rất nhiều vấn đề và lãng phí một giờ và vẫn không tìm thấy giải pháp mặc dù tôi đang làm việc trên dữ liệu của riêng mình để tạo ra một bot trò chuyện.1 silver badge6 bronze badges

(2, 3)
{"a": [[1, 2, 3], [4, 5, 6]], "aa": [2, [2, 3, 4], [[1, 2, 3], [4, 5, 6]]], "bb": [2]}
0 và
(2, 3)
{"a": [[1, 2, 3], [4, 5, 6]], "aa": [2, [2, 3, 4], [[1, 2, 3], [4, 5, 6]]], "bb": [2]}
1 là các mảng vô cùng:

obj_text = codecs.open(file_path, 'r', encoding='utf-8').read()
b_new = json.loads(obj_text)
a_new = np.array(b_new)
9

Sau đó, bạn chỉ cần đọc nó và thực hiện các hoạt động:Oct 9, 2018 at 14:49

Các câu trả lời khác sẽ không hoạt động nếu mã của người khác (ví dụ: mô -đun) đang thực hiện

(2, 3)
{"a": [[1, 2, 3], [4, 5, 6]], "aa": [2, [2, 3, 4], [[1, 2, 3], [4, 5, 6]]], "bb": [2]}
2. Điều này xảy ra thường xuyên, ví dụ với các máy chủ web rằng tự động chuyển đổi phản hồi trả lại của họ cho JSON, có nghĩa là chúng ta không thể luôn thay đổi các đối số cho
(2, 3)
{"a": [[1, 2, 3], [4, 5, 6]], "aa": [2, [2, 3, 4], [[1, 2, 3], [4, 5, 6]]], "bb": [2]}
3. Câu trả lời này giải quyết điều đó, và dựa trên một giải pháp mới (tương đối) hoạt động cho bất kỳ lớp bên thứ 3 nào (không chỉ numpy).
This answer solves that, and is based off a (relatively) new solution that works for any 3rd party class (not just numpy).

TLDR

(2, 3)
{"a": [[1, 2, 3], [4, 5, 6]], "aa": [2, [2, 3, 4], [[1, 2, 3], [4, 5, 6]]], "bb": [2]}
4

class NumpyEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, np.ndarray):
            return obj.tolist()
        return json.JSONEncoder.default(self, obj)

a = np.array([[1, 2, 3], [4, 5, 6]])
print(a.shape)
json_dump = json.dumps({'a': a, 'aa': [2, (2, 3, 4), a], 'bb': [2]}, 
                       cls=NumpyEncoder)
print(json_dump)
0

Đã trả lời ngày 14 tháng 9 lúc 22:42Sep 14 at 22:42

Hướng dẫn python save array to json - python lưu mảng vào json

Jeff Hykinjeff HykinJeff Hykin

1.40915 huy hiệu bạc24 Huy hiệu đồng15 silver badges24 bronze badges

TypeError: mảng ([[0.46872085, 0.67374235, 1.0218339, 0.13210179, 0.5440686, 0.9140083, 0.5872025, 0.219381]

Lỗi nêu trên đã được đưa ra khi tôi cố gắng truyền danh sách dữ liệu cho model.predict () khi tôi đang mong đợi phản hồi ở định dạng JSON.

class NumpyEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, np.ndarray):
            return obj.tolist()
        return json.JSONEncoder.default(self, obj)

a = np.array([[1, 2, 3], [4, 5, 6]])
print(a.shape)
json_dump = json.dumps({'a': a, 'aa': [2, (2, 3, 4), a], 'bb': [2]}, 
                       cls=NumpyEncoder)
print(json_dump)
1

Nhưng may mắn đã tìm thấy gợi ý để giải quyết lỗi đang ném tuần tự hóa các đối tượng chỉ được áp dụng cho ánh xạ chuyển đổi sau đây phải theo cách sau đối tượng - Dict Array - List String - String Integer - Integer

Nếu bạn cuộn lên để xem dòng số 10 dự đoán = Loaded_model.predict (d) Trường hợp dòng mã này tạo ra đầu ra của kiểu dữ liệu mảng

Cuối cùng tôi tìm thấy giải pháp chỉ bằng cách chuyển đổi đầu ra thu được thành danh sách loại bằng cách sau các dòng mã

Dự đoán = Loaded_Model.Predict (d) listType = prediction.toList () return jsonify (listType)
listtype = prediction.tolist() return jsonify(listtype)

Bhoom! Cuối cùng cũng có được sản lượng dự kiến,

Hướng dẫn python save array to json - python lưu mảng vào json

Đã trả lời ngày 22 tháng 12 năm 2018 lúc 7:26Dec 22, 2018 at 7:26

Hướng dẫn python save array to json - python lưu mảng vào json

Làm thế nào để bạn chuyển đổi một mảng thành một JSON trong Python?

Nếu bạn có một đối tượng Python, bạn có thể chuyển đổi nó thành chuỗi JSON bằng cách sử dụng phương thức json.dumps ().using the json. dumps() method.

Bạn có thể lưu trữ một mảng trong JSON không?

Mảng JSON có thể lưu trữ các giá trị của chuỗi loại, mảng, boolean, số, đối tượng hoặc null.Trong mảng JSON, các giá trị được phân tách bằng dấu phẩy.Các phần tử mảng có thể được truy cập bằng toán tử [].Mảng JSON có các loại khác nhau.. In JSON array, values are separated by commas. Array elements can be accessed using the [] operator. JSON Array is of different types.

Bạn có thể lưu một đối tượng Python cho JSON không?

Json.dumps () có thể được sử dụng để chuyển đổi một đối tượng Python thành chuỗi JSON.JSON.Hàm Dumps () có một tham số, là dữ liệu được chuyển đổi thành chuỗi JSON. dumps() can be used for converting a Python object into a JSON string. The json. dumps() function takes one parameter, which is the data to be converted into JSON string.

Làm cách nào để lưu dữ liệu JSON trong Python?

Phương pháp 2: Viết JSON vào một tệp trong python bằng json.dump () Một cách khác để viết json vào một tệp là bằng cách sử dụng phương thức json.dump ()Ở dạng JSON, mà không cần chuyển đổi nó thành một đối tượng JSON thực tế.using json.dump() Another way of writing JSON to a file is by using json.dump() method The JSON package has the “dump” function which directly writes the dictionary to a file in the form of JSON, without needing to convert it into an actual JSON object.