从中间想起进行记载的以便加强记忆和之后的快速查看
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