记看代码时遇到的不懂的知识点

从中间想起进行记载的以便加强记忆和之后的快速查看

tf.tile()

tf.tile(inputs,[m,n...len(inputs.shape()])
第一个参数即函数的输入数据
第二个参数的维度是输入数据的维度,每个值的含义是对输入维度进行几倍的扩张
例子:
import tensorflow as tf
a = tf.constant([[1, 2], [3, 4], [5, 6]], dtype=tf.float32)
a1 = tf.tile(a, [2, 3])
with tf.Session() as sess:
    print(sess.run(a))
    print(sess.run(tf.shape(a)))
    print(sess.run(a1))
    print(sess.run(tf.shape(a1)))
=======
[[1. 2.]
 [3. 4.]
 [5. 6.]]
[3 2]
[[1. 2. 1. 2. 1. 2.]
 [3. 4. 3. 4. 3. 4.]
 [5. 6. 5. 6. 5. 6.]
 [1. 2. 1. 2. 1. 2.]
 [3. 4. 3. 4. 3. 4.]
 [5. 6. 5. 6. 5. 6.]]
[6 6]

上例源于博客:
https://blog.csdn.net/tsyccnh/article/details/82459859

将文件保存问json文件:

    with open(filePath(要保存的文件路径), 'w') as f:
        json.dump(text(要保存的内容), f)

写入json时遇到问题:
Object of type ‘uint64’ is not JSON serializable

原因:
obj 里的 int64、datetime64、datetime等这些数据类型是numpy里的数据类型(pandas里用的就是numpy),需要转为python的数据类型才可以进行json.dumps()。

解决:
在文件中添加:

import json
from datetime import date, datetime

class NpEncoder(json.JSONEncoder):
    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()
        elif isinstance(obj, datetime):
            return obj.strftime('%Y-%m-%d %H:%M:%S')
        elif isinstance(obj, date):
            return obj.strftime('%Y-%m-%d')
        elif isinstance(obj, np.datetime64):   # 这里解决题目上报错
            return str(obj)[:10]
        else:
            return super(NpEncoder, self).default(obj)

json.dumps(obj, cls=NpEncoder)  #在文件中调用

ref:https://www.jianshu.com/p/252abd18d00b

写入json文件遇到中文被转码的问题:
如:源文件中:‘新课’ 存储到json文件中变为:"\u65b0\u8bfe"

解决:添加编码方式并修改默认编码加以解决如下:

    with open(" ***.json"(要保存的文件路径), 'w') as f:
        json.dump(seqs_by_student, f,ensure_ascii=False)

0802 代码问题:

对字典数据根据key进行排序:

使用sorted函数

官方:

def sorted(*args, **kwargs): # real signature unknown
    """
    Return a new list containing all items from the iterable in ascending order.
    
    A custom key function can be supplied to customize the sort order, and the
    reverse flag can be set to request the result in descending order.
    """
    pass

ex:

res=dict(sorted(res.items(),key=lambda item: item[0]))
#第一个参数是可迭代的对象,第二个参数代表根据key及逆行排序 sorted函数返回列表,在这里使用dict()将其变为字典形式

传参问题:

def saveData(path,res,needSortd=False)
saveData(learningSequencePath,seqs_by_student)                 #needSortd=False 
saveData(course2MileStoneIDPath,course2MileStoneID,needSortd=True)  #needSortd=True
默认参数可传可不传,若对默认参数传参则使用传递的参数

python dataframe.to_excel('.xlsx’) 过长的数字转换为科学计数法保存且不保留精读问题
如 原始数据为 3313662737057888675 保存的是:1.33137E+19
*

参照转换csv保留原始数据的方法:

dataframe['id'] = str(dataframe['id']) + '\t'	*# 长数字后添加横向制表符* dataframe.to_csv(csv_path)

此处我使用的是dataframe.to_excel(excel_path)
则结果保存的是: 0      13313662737057888675\n1    莫名的多出0 和\n1

因此灵机一动直接遍历转换算了于是:
data['id']=[ str(i) for i in data['id']]
转换成功   结果:3313662737057888675 -> 3313662737057888675 

报错:
Non-UTF-8 code starting with ‘\xb7’ in file SyntaxError: (unicode error) '

解决:

在程序最上面加上: # coding=gbk

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值