文档章节

一个numpy int64的坑

Kanonpy
 Kanonpy
发布于 2017/09/26 20:23
字数 479
阅读 433
收藏 0

今天跑一个tensorflow代码,由于最后结果需要导出为json的文件,所以采用了json.dumps直接写文件,但是一直报错:

Traceback (most recent call last):
  File "predict_test.py", line 62, in <module>
    json.dump(submit, fw)
  File "/home/tensorflow/.pyenv/versions/3.5.3/lib/python3.5/json/__init__.py", line 178, in dump
    for chunk in iterable:
  File "/home/tensorflow/.pyenv/versions/3.5.3/lib/python3.5/json/encoder.py", line 427, in _iterencode
    yield from _iterencode_list(o, _current_indent_level)
  File "/home/tensorflow/.pyenv/versions/3.5.3/lib/python3.5/json/encoder.py", line 324, in _iterencode_list
    yield from chunks
  File "/home/tensorflow/.pyenv/versions/3.5.3/lib/python3.5/json/encoder.py", line 403, in _iterencode_dict
    yield from chunks
  File "/home/tensorflow/.pyenv/versions/3.5.3/lib/python3.5/json/encoder.py", line 324, in _iterencode_list
    yield from chunks
  File "/home/tensorflow/.pyenv/versions/3.5.3/lib/python3.5/json/encoder.py", line 436, in _iterencode
    o = _default(o)
  File "/home/tensorflow/.pyenv/versions/3.5.3/lib/python3.5/json/encoder.py", line 179, in default
    raise TypeError(repr(o) + " is not JSON serializable")
TypeError: 26 is not JSON serializable

输入图片说明

蒙蔽了很久,怎么26这个数字不可以serializable??

定位到报错代码位置,报错代码如下:

top_indices = []
submit = []
for i in range(n):
    diction = {}
    diction["label_id"] = list(preds[i].argsort()[-3:][::-1])
    diction["image_id"] = id_list[i]
    submit.append(diction)

with open('submit.plk','w') as fw:
    json.dump(submit, fw)

好像没有什么问题呀~??

做了个小测试:

In [2]: a = submit[1]

In [3]: a
Out[3]: 
{'image_id': 'c532ed79f6c54fb3cf8c45004656e385079a5284.jpg',
 'label_id': [25, 13, 15]}

In [4]: b = {'image_id': 'c532ed79f6c54fb3cf8c45004656e385079a5284.jpg',
   ...:  'label_id': [25, 13, 15]}

In [5]: json.dumps(b)
Out[5]: '{"image_id": "c532ed79f6c54fb3cf8c45004656e385079a5284.jpg", "label_id": [25, 13, 15]}'

In [6]: a == b
Out[6]: True

In [7]: json.dumps(a)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-9-373a2a7edfd2> in <module>()
...
TypeError: 25 is not JSON serializable

明明a 的值 和b 相等,为什么b就可以json.dumps,而 a json.dumps报错,懵逼一会,想想要不查看下25这个对象,原来对于a来说 25 是一个<type 'numpy.int64'>!!!

被狠狠地坑了半个小时~~由于平时做数据处理大家会经常用到numpy的array,所以大家也要注意,虽然都是整形,但numpy.int64和python的整数是不一样的,解决方案,可以用astype('in32t')或者直接用python的int()方法。

© 著作权归作者所有

Kanonpy
粉丝 16
博文 42
码字总数 45373
作品 0
广州
程序员
私信 提问
JS获取DOM元素的方法(8种)

JS获取DOM元素的方法(8种) 通过ID获取(getElementById) 通过name属性(getElementsByName) 通过标签名(getElementsByTagName) 通过类名(getElementsByClassName) 获取html的方法(d...

梦想代码
2018/09/10
0
0
喷下干货。。。

看了一个所谓很有干货的文章。想起内涵和外延的定理。内涵越多的,外延越少,反之亦然。也就是所谓,内涵越多的货,越干。干到最后,就是个石头。喜欢干货的,无非身上带的石头少,遇到问题,...

中山野鬼
2013/10/15
925
10
轻松学习快速排序(一 ) - 基本的快速排序

快速排序(Quicksort),又称划分交换排序(partition-exchange sort),简称快排,最早由东尼·霍尔提出,是一种较快的排序算法。对n项进行排序平均要做O(nlogn)次比较,最差的情况下需要做...

张风闲
2018/08/19
0
0
能量视角下的GAN模型:GAN=“挖坑”+“跳坑”

作者丨苏剑林 单位丨广州火焰信息科技有限公司 研究方向丨NLP,神经网络 个人主页丨kexue.fm 在这个系列中,我们尝试从能量的视角理解 GAN。我们会发现这个视角如此美妙和直观,甚至让人拍案...

Paper_weekly
02/12
0
0
Springboot 整合 dubbo 的一些坑

最近在做一个分布式的web系统,用的boot+dubbo,中间碰到不少坑,最近碰到的坑可是坑了我三四天,把坑都给大家捎带分享一下,希望能少走弯路。 1. 坑一:与jpa的不兼容 如果你想写这样的jpa...

FantJ
2018/06/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
今天
5
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
今天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
今天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
今天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
今天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部