如何使Python类可序列化?
一个简单的课程:
class FileItem:
def __init__(self, fname):
self.fname = fname
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能得到输出:
>>> import json
>>> my_file = FileItem('/foo/bar')
>>> json.dumps(my_file)
TypeError: Object of type 'FileItem' is not JSON serializable
Run Code Online (Sandbox Code Playgroud)
没有错误(__CODE__)
如果要创建1d数组,可以将其实现为List,或者使用标准库中的"array"模块.我一直使用列表进行1d数组.
我想要使用阵列模块的原因或情况是什么?
它是用于性能和内存优化,还是我错过了一些明显的东西?
有没有人在Python中阅读二进制Matlab .mat文件的成功经验?
(我已经看到有人loadmat()声称支持读取.mat文件,但是我没有成功.我安装了loadmat()0.7.0版,我找不到loadmat()方法)
使用simplejson序列化numpy数组的最有效方法是什么?
在Keras,我们可以将输出返回model.fit到历史记录,如下所示:
history = model.fit(X_train, y_train,
batch_size=batch_size,
nb_epoch=nb_epoch,
validation_data=(X_test, y_test))
Run Code Online (Sandbox Code Playgroud)
现在,如何将历史记录保存到文件中以供进一步使用(例如,绘制针对时期的acc或loss的绘制图)?
http://mpld3.github.io/examples/linked_brush.html的mpld3(matplotlibon d3)示例提供了以下代码示例:LinkedBrush
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
import mpld3
from mpld3 import plugins, utils
data = load_iris()
X = data.data
y = data.target
# dither the data for clearer plotting
X += 0.1 * np.random.random(X.shape)
fig, ax = plt.subplots(4, 4, sharex="col", sharey="row", figsize=(8, 8))
fig.subplots_adjust(left=0.05, right=0.95, bottom=0.05, top=0.95,
hspace=0.1, wspace=0.1)
for i in range(4):
for j in range(4):
points = ax[3 - i, j].scatter(X[:, …Run Code Online (Sandbox Code Playgroud) 我是python和机器学习的新手。我有一个线性回归模型,该模型能够根据我转储以与Web服务一起使用的输入来预测输出。请参见下面的代码:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25)
regression_model = LinearRegression()
regression_model.fit(X_train, y_train)
print(regression_model.predict(np.array([[21, 0, 0, 0, 1, 0, 0, 1, 1, 1]]))) # this is returning my expected output
joblib.dump(regression_model, '../trainedModels/MyTrainedModel.pkl')
Run Code Online (Sandbox Code Playgroud)
使用flask我尝试将其公开为Web服务,如下所示:
@app.route('/predict', methods=['POST'])
def predict():
X = [[21, 0, 0, 0, 1, 0, 0, 1, 1, 1]]
model = joblib.load('../trainedModels/MyTrainedModel.pkl')
prediction = model.predict(np.array(X).tolist())
return jsonify({'prediction': list(prediction)})
Run Code Online (Sandbox Code Playgroud)
但是它抛出以下异常
Object of type 'ndarray' is not JSON serializable
Run Code Online (Sandbox Code Playgroud)
我试过了 NumPy数组不是JSON可序列化的
但仍然是相同的错误。我该如何解决这个问题
我在 python 中有一个这样的字典:
mydic = {
'x1': list_of_numpy_array,
'x2': a numpy_array,
'x3': a list_of_numpy_array,
'x4': a list_of_numpy_array
}
Run Code Online (Sandbox Code Playgroud)
我想将此字典发送给flask-api调用此 api 的客户端。当我使用此代码时:
class GetRepresentationResource(Resource):
url = 'representation'
def get(self):
# previous lines of my code which generates mydic
return {
'data': mydict,
'err': ''
}
Run Code Online (Sandbox Code Playgroud)
我得到错误: Is not serializeable
如果我跑
import pandas as pd
import mpld3
import seaborn as sns
df = pd.DataFrame([(1,3),(2,-1)],columns= ['a','b'])
plt.figure(figsize=(5,5))
sns.regplot('a', 'b', df)
Run Code Online (Sandbox Code Playgroud)
工作良好.如果我加
mpld3.enable_notebook()
Run Code Online (Sandbox Code Playgroud)
我得到错误:'ndarray'类型的对象不是JSON可序列化的
你对mpld3引起这种烦恼的原因有什么建议吗?
对于我能理解的内容,这不是NumPy数组中提出的问题不是JSON序列化 问题在我的问题中,我问的是如何使mpld3工作或至少不使其他一切都不起作用.
我有一个二维列表,如:
data = [[1,2,3], [2,3,4], [4,5,6]]
Run Code Online (Sandbox Code Playgroud)
我想像这样将它写入 JSON 文件:
{
'data':[
[1,2,3],
[2,3,4],
[4,5,6]
]
}
Run Code Online (Sandbox Code Playgroud)
我得到这个json.dumps(data, indent=4, sort_keys=True):
{
'data':[
[
1,
2,
3
],
[
2,
3,
4
],
[
4,
5,
6]
]
}
Run Code Online (Sandbox Code Playgroud)
这是另一个问题如何在使用 JSON 模块进行漂亮打印时实现自定义缩进?,但那是字典。
我有一个数据框genre_rail,其中一列包含numpy.ndarray.数据框如下所示
其中的数组如下所示:
['SINGTEL_movie_22906' 'SINGTEL_movie_22943' 'SINGTEL_movie_24404'
'SINGTEL_movie_22924' 'SINGTEL_movie_22937' 'SINGTEL_movie_22900'
'SINGTEL_movie_24416' 'SINGTEL_movie_24422']
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下代码
import json
json_content = json.dumps({'mydata': [genre_rail.iloc[i]['content_id'] for i in range(len(genre_rail))] })
Run Code Online (Sandbox Code Playgroud)
但是得到了一个错误
TypeError:数组不是JSON可序列化的
我需要输出为
{"Rail2_contend_id":
["SINGTEL_movie_22894","SINGTEL_movie_22898",
"SINGTEL_movie_22896","SINGTEL_movie_24609","SINGTEL_movie_2455",
"SINGTEL_movie_24550","SINGTEL_movie_24548","SINGTEL_movie_24546"]}
Run Code Online (Sandbox Code Playgroud) 我正在学习 python 开发,我是 python 世界的新手,下面是我的字典,其值为 NumPy 数组,我想将其转换为 JSON,然后将其从 JSON 转换回带有 NumPy 数组的字典。实际上,我正在尝试使用 json.dumps() 对其进行转换,但它给了我一个错误:ndarray 类型的对象不是 JSON 可序列化的
{
'chicken': array([5. , 4. , 3. , 2. , 1. , 0.5, 0. ]),
'banana': array([4. , 3. , 2. , 1. , 0.5, 0. ]),
'carrots': array([5. , 4. , 3. , 2. , 1. , 0.5, 0. ]),
'turkey': array([5. , 4. , 3. , 2. , 1. , 0.5, 0. ]),
'rice': array([3. , 2. , 1. , …Run Code Online (Sandbox Code Playgroud)