Hướng dẫn convert 2d array to json python - chuyển đổi mảng 2d sang json python

Nếu bạn chỉ đang cố gắng để có được một biểu diễn chuỗi đẹp của mảng của mình và sử dụng loại mảng chuỗi không cung cấp cho bạn biểu diễn bạn muốn, thì định dạng tuần tự hóa thông báo không phải là thứ cần sử dụng. Các định dạng tuần tự hóa là để lưu/truyền dữ liệu. JSON rất tốt ở chỗ nó cũng thường có thể đọc được, nhưng đó không phải là mục đích, và buộc nó thành một định dạng khác sẽ làm cho nó không còn là một bài tuần tự JSON. Ngay cả các tùy chọn savetxt và loadTXT sẽ không hoạt động cho định dạng mà bạn muốn (lặp lại hàng đầu tiên cho mỗi cột). Bạn có thể thực hiện tuần tự hóa của riêng mình nếu nó phải ở định dạng đó bằng cách sử dụng mã sau:

def prettySerialize(inArray):
    ids = inArray[0]
    strRep = ''

    for row in inArray[1:]:
        for i,item in enumerate(row):
            rowStr = id[i] + ':' + item + '\n'
            strRep += rowStr

    return strRep

Vấn đề với điều này là nó sẽ chậm hơn nhiều và biểu diễn lớn hơn nhiều của mảng (lặp lại hàng "ID" nhiều lần). Tôi rất khuyên bạn nên đi với một giải pháp JSON (hoặc MSGPack) thuần túy trừ khi bạn đặc biệt định dạng điều này để đọc của con người ...

Đây là một giải pháp tôi đang sử dụng để tuần tự hóa với MSGPACK (cũng sẽ hoạt động với JSON) ... Chuyển đổi thành một tuple bao gồm DTYPE và hình dạng mảng:

def arrayToTuple(arr):
    if arr is None:
        return None

    return (arr.dtype.str, arr.shape, arr.tostring())

def arrayFromTuple(tupl):
    if tupl is None:
        return None

    typeStr, shape, dataStr = tupl

    resultArray = numpy.fromstring(dataStr, dtype=typeStr).reshape(shape)

    return resultArray

Vì vậy, các lệnh và các lệnh tải sẽ là:

strRep = json.dumps(arrayToTuple(arr))
arrayFromTuple(json.loads(strRep))

Và điều này cũng hoạt động cho MsgPack.Dumps và MsgPack.Loads (một biểu diễn nhị phân nhỏ gọn hơn nhanh hơn).

Một cảnh báo có thể được áp dụng cho mảng của bạn: nếu mảng numpy của bạn là một đối tượng DTYPE thì nó sẽ không tuần tự hóa bằng các phương thức tiêu chuẩn như một mảng đầy đủ. Bạn sẽ phải tuần tự hóa từng đối tượng riêng lẻ vì ID đối tượng, không phải dữ liệu, được lưu trữ trong mảng. Sử dụng dtype làm dtype = '| s' trong đó độ dài chuỗi tối đa sẽ làm cho mảng serializable.

Trong bài đăng này, chúng tôi sẽ học cách chuyển đổi mảng numpy thành json python bằng các ví dụ. Sử dụng & nbsp; Cài đặt Pip Pip Jsonlib-python3. imported using “import JSON“, First need to make sure the JSON module is installed or we can install it using “pip install jsonlib-python3” .NumPy land Pandas Library.

1. Chuyển đổi mảng numpy thành json python


Trong Python Exmple này, chúng tôi đang chuyển đổi một mảng numpy thành JSON và lưu trữ nó thành tệp JSON. Bằng cách hiểu danh sách được sử dụng để ghi vào tệp JSON bằng phương thức json.dump (data, fileObj).json.dump(data, Fileobj) method.

import numpy as np

import json
 
myarr = np.array([['Jack', 7, 44], ['rack', 13, 35], ['Sham', 13, 35]])
lists = myarr.tolist()
data = [{'Name': item[0], 'Age': item[1], 'Data': item[2]} for i, item in enumerate(lists)]
print(data)

with open('myJsonfile', 'w') as FileObj:
    json.dump(data, Fileobj)

Đầu ra

[{'Name': 'Jack', 'Age': '7', 'Data': '44'}, {'Name': 'rack', 'Age': '13', 'Data': '35'}, {'Name': 'Sham', 'Age': '13', 'Data': '35'}]

  • Cách xác thực dữ liệu JSON trong Python
  • Cách xác nhận lược đồ JSON trong Python

2. Chuyển đổi mảng numpy thành json python


Trong chương trình Python này, chúng tôi đã xác định numpyencoder (), tham số đầu tiên cho json.dump () là mảng numpy (myarr) và tham số thứ hai là và chúng tôi gán chức năng numpyencoder cho mặc định = numpyencoder..let chúng tôi hiểu bằng ví dụNumpyEncoder function to default=NumpyEncoder..Let us understand with Example

import json
import numpy as np

myarr = np.array([['Jack', 7, 44],['rack', 13, 35],['Sham', 13, 35]])
class NumpyEncoder(json.JSONEncoder):
   
    def default(self, myobj):
        if isinstance(myobj, np.integer):
            return int(myobjobj)
        elif isinstance(myobj, np.floating):
            return float(myobj)
        elif isinstance(myobj, np.ndarray):
            return myobj.tolist()
        return json.JSONEncoder.default(self, myobj)

numpytoJson = json.dumps(myarr, cls=NumpyEncoder)
print(numpytoJson)

#reading JSON data
JSONToNUmpy = json.loads(numpytoJson)



print('JSON to NUmpy:',JSONToNUmpy)

Đầu ra

[["Jack", "7", "44"], ["rack", "13", "35"], ["Sham", "13", "35"]]
JSON to NUmpy [['Jack', '7', '44'], ['rack', '13', '35'], ['Sham', '13', '35']]

3. Pandas để chuyển đổi mảng numpy thành json python


Chúng tôi đã sử dụng phương thức Pandas libaray to_json () để chuyển đổi mảng numpy thành json.first, chúng tôi đã tạo một dataFrame từ mảng numpy với chỉ mục và cột và sử dụng đối tượng DataFrame để gọi phương thức to_json () với tham số adp indexIndex and columns and use dataframe object to call the to_json() method with parameter orient=’index’

import pandas as pd
import numpy

myarr = np.array([['Jack', 7, 44],['rack', 13, 35],['Sham', 13, 35]])

dfobj = pd.DataFrame(myarr, index=['row 1', 'row 2','row 3'], columns=['Name', 'Age', 'Data'])
dfobj = dfobj.to_json(orient='index')

print("NumPy array to Json:")
print(dfobj)

Đầu ra

NumPy array to Json:
{"row 1":{"Name":"Jack","Age":"7","Data":"44"},"row 2":{"Name":"rack","Age":"13","Data":"35"},"row 3":{"Name":"Sham","Age":"13","Data":"35"}}

4. Pandas chuyển đổi mảng numpy thành JSON Erient bằng các giá trị


Chúng tôi đã sử dụng phương thức Pandas libaray to_json () để chuyển đổi mảng numpy thành json. Trước khi chúng tôi đã tạo một khung dữ liệu từ mảng numpy với chỉ mục và cột và sử dụng đối tượng DataFrame để gọi phương thức to_json () với các giá trị tham số =Index and columns and use dataframe object to call the to_json() method with parameter orient=’Values’ instead of index

import pandas as pd
import numpy

myarr = np.array([['Jack', 7, 44],['rack', 13, 35],['Sham', 13, 35]])

dfobj = pd.DataFrame(myarr, index=['row 1', 'row 2','row 3'], columns=['Name', 'Age', 'Data'])
dfobj = dfobj.to_json(orient='values')

print("NumPy array to Json:")
print(dfobj)

Đầu ra

def arrayToTuple(arr):
    if arr is None:
        return None

    return (arr.dtype.str, arr.shape, arr.tostring())

def arrayFromTuple(tupl):
    if tupl is None:
        return None

    typeStr, shape, dataStr = tupl

    resultArray = numpy.fromstring(dataStr, dtype=typeStr).reshape(shape)

    return resultArray
0

5. Pandas chuyển đổi mảng numpy thành JSON Erient bằng các giá trị


Trong ví dụ chương trình Python này, chúng tôi đã sử dụng thư viện Pandas, trước tiên, chúng tôi đã cài đặt nó trên hệ thống cục bộ và được nhập bằng cách sử dụng phương pháp. Đầu tiên, chúng tôi đã tạo một khung dữ liệu từ mảng numpy với chỉ mục và cột và sử dụng đối tượng khung dữ liệu để gọi phương thức to_json () với tham số Orient = xông Split, thay vì chỉ mục và các giá trịto_json() method with parameter orient=’split’ instead of index and values

def arrayToTuple(arr):
    if arr is None:
        return None

    return (arr.dtype.str, arr.shape, arr.tostring())

def arrayFromTuple(tupl):
    if tupl is None:
        return None

    typeStr, shape, dataStr = tupl

    resultArray = numpy.fromstring(dataStr, dtype=typeStr).reshape(shape)

    return resultArray
1

Đầu ra

def arrayToTuple(arr):
    if arr is None:
        return None

    return (arr.dtype.str, arr.shape, arr.tostring())

def arrayFromTuple(tupl):
    if tupl is None:
        return None

    typeStr, shape, dataStr = tupl

    resultArray = numpy.fromstring(dataStr, dtype=typeStr).reshape(shape)

    return resultArray
2

Bản tóm tắt

Trong bài đăng này, chúng tôi đã học được cách chuyển đổi mảng numpy thành JSON Python bằng cách sử dụng mô -đun JSON, Numpy và Pandas.

Làm cách nào để chuyển đổi một mảng numpy thành json?

Sử dụng Numpy ...
print(arr).
Danh sách = mảng.liệt kê().
json_str = json.bãi rác (danh sách).
print(json_str).

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

Sử dụng json.dumps () để chuyển đổi danh sách thành mảng JSON trong Python.Hàm Dumps () lấy một danh sách làm đối số và trả về chuỗi JSON. dumps() to convert a list to a JSON array in Python. The dumps() function takes a list as an argument and returns a JSON String.

Jsonify trong Python là gì?

Giới thiệu về Flask Jsonify.Flask Jsonify được định nghĩa là một chức năng trong khả năng của Python để chuyển đổi đầu ra của JSON (ký hiệu đối tượng JavaScript) thành đối tượng phản hồi với Ứng dụng/JSON Mimetype bằng cách kết thúc hàm Dumps () để thêm các cải tiến.

JSON Dump Python là gì?

Phương thức Dump () được sử dụng khi các đối tượng Python phải được lưu trữ trong một tệp.Các bãi () được sử dụng khi các đối tượng được yêu cầu ở định dạng chuỗi và được sử dụng để phân tích cú pháp, in, v.v.Dump () cần tên tệp JSON trong đó đầu ra phải được lưu trữ dưới dạng đối số.used when the Python objects have to be stored in a file. The dumps() is used when the objects are required to be in string format and is used for parsing, printing, etc, . The dump() needs the json file name in which the output has to be stored as an argument.