相关疑难解决方法(0)

将numpy dtypes转换为本机python类型

如果我有一个numpy dtype,我该如何自动将其转换为最接近的python数据类型?例如,

numpy.float32 -> "python float"
numpy.float64 -> "python float"
numpy.uint32  -> "python int"
numpy.int16   -> "python int"
Run Code Online (Sandbox Code Playgroud)

我可以尝试提出所有这些情况的映射,但是numpy是否提供了一些自动方式将其dtypes转换为最接近的可能的本机python类型?这种映射不一定是详尽无遗的,但它应该转换具有close python模拟的常见dtypes.我认为这已经发生在numpy的某个地方了.

python numpy

200
推荐指数
9
解决办法
18万
查看次数

在Python中序列化JSON时,"TypeError:(Integer)不是JSON可序列化的"?

我试图从python发送一个简单的字典到json文件,但我一直得到"TypeError:1425不是JSON可序列化"的消息.

import json
alerts = {'upper':[1425],'lower':[576],'level':[2],'datetime':['2012-08-08 15:30']}
afile = open('test.json','w')
afile.write(json.dumps(alerts,encoding='UTF-8'))
afile.close()
Run Code Online (Sandbox Code Playgroud)

如果我添加默认参数,那么它会写入,但整数值将作为字符串写入json文件,这是不可取的.

afile.write(json.dumps(alerts,encoding='UTF-8',default=str))
Run Code Online (Sandbox Code Playgroud)

python encoding json typeerror

145
推荐指数
6
解决办法
9万
查看次数

TypeError:“ float32”类型的对象不可JSON序列化

我正在处理numpy.float32数字,但它们不适用JSON。解决此问题的正确方法是什么?

import numpy as np
import json

a = np.float32(1)
json.dumps(a)

TypeError: Object of type 'float32' is not JSON serializable
Run Code Online (Sandbox Code Playgroud)

python json numpy

13
推荐指数
1
解决办法
2万
查看次数

为什么一些numpy数据类型JSON可序列化而其他不是?

Numpy有很多不同的基本类型,所有这些都列在这里.

我已经在我的程序中找到了一个float32不能进行JSON序列化的问题,所以我开始测试上面列表中的所有数据类型:

>>> import numpy as np
>>> from json import dumps
>>> dumps(np.bool(True))
'true'
>>> dumps(np.bool_(True))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.4/json/__init__.py", line 230, in dumps
    return _default_encoder.encode(obj)
  File "/usr/lib/python3.4/json/encoder.py", line 192, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python3.4/json/encoder.py", line 250, in iterencode
    return _iterencode(o, 0)
  File "/usr/lib/python3.4/json/encoder.py", line 173, in default
    raise TypeError(repr(o) + " is not JSON serializable")
TypeError: True is not JSON serializable
>>> …
Run Code Online (Sandbox Code Playgroud)

python serialization json types numpy

9
推荐指数
1
解决办法
2752
查看次数

将用户构建的json编码器传递给Flask的jsonify

我想传递一个我写入Flask jsonify函数的numpy JSON序列化器,但我找不到办法做到这一点.我无法使用json.dumps,因为我必须在处理错误消息时设置Flask响应的status_code.有没有办法将JSON序列化程序作为参数传递,类似于使用如下所示的cls参数json.dumps:将numpy类型转换为python?我的代码如下; 谢谢.

import json
import numpy as np
from flask import Flask, jsonify

class JSON_Improved(json.JSONEncoder):
    '''
    Used to help jsonify numpy arrays or lists that contain numpy data 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()
        else:
            return super(MyEncoder, self).default(obj)

app = Flask(__name__)
@app.errorhandler(ErrorMessage)
def handle_invalid_usage(error):
    response = jsonify(error.to_dict())
    response.status_code = error.status_code
    return response
Run Code Online (Sandbox Code Playgroud)

python json numpy flask

8
推荐指数
2
解决办法
3784
查看次数

标签 统计

python ×5

json ×4

numpy ×4

encoding ×1

flask ×1

serialization ×1

typeerror ×1

types ×1