admin 管理员组文章数量: 887019
说明:本文更新顺序是从下到上,最新的函数更新在开头。
np.log
log默认以e为底,log10, log2, log1p, emath.log
dict对象的keys()和values()返回的值,只要之间无修改,则总是一一对应的。
搜dict的key, value顺序, 中文没搜到想要的结果。
英文答案链接:python-dictionary-are-keys-and-values-always-the-same-order
在调用dict.keys()和dict.values()时,只要期间没有对dict对象做过干预或变更操作,则得到的结果, 键-值顺序总是一一对应的。
Python种dump和dumps的区别
dumps是将dict转化成str格式,loads是将str转化成dict格式。
dump和load也是类似的功能,只是与文件操作结合起来了。
Python日志实时写入
open 函数中有一个bufferin的参数,默认是-1,如果设置为0是,就是无缓冲模式。
但是用二进制模式打开这个文件,并且把要写入的信息转换byte -like如下。
with open("test.txt",'wb',buffering=0) as f:
#wb是写模式加二进制模式
f.write(b"hello!")在字符串前加b,转换成二进制
如果没用二进制打开文件会提示ValueEorror:
没把字符串转成二进制会提示:TypeError: a bytes-like object is required, not ‘str’
测试:
class Logger(object):
def __init__(self, log_path="default.log"):
self.terminal = sys.stdout
# self.log = open(log_path, "w+")
self.log = open(log_path, "wb", buffering=0)
def print(self, message):
self.terminal.write(message + "\n")
self.log.write(message.encode('utf-8') + b"\n")
def print_time(self, text=""):
message = time.strftime('[ %Y-%m-%d %H:%M ]', time.localtime(time.time())) + text
self.print(message)
def flush(self):
self.terminal.flush()
self.log.flush()
def close(self):
self.log.close()
报错:TypeError: can't concat str to bytes
这是因为:
(1)log.write需要写入bytes对象,encode返回的是bytes型的数据,不可以和str相加,将‘\n’前加b
(2)terminal.write函数参数需要为str类型,转化为str
numpy, argsort逆序
a=np.arange(10)
a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
a[0]=11
a
array([11, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.argsort(a)
array([1, 2, 3, 4, 5, 6, 7, 8, 9, 0], dtype=int64)
numpy 往array里添加一个元素
首先这里p_arr为一个numpy的array,p_为一个元素
p_arr = np.concatenate((p_arr,[p_])) # 先将p_变成list形式进行拼接,注意输入为一个tuple
p_arr = np.append(p_arr,p_) #直接向p_arr里添加p_
# 注意一定不要忘记用赋值覆盖原p_arr不然不会变
# 但是,仍然建议用list子代append。因为numpy的append默认添加的值全转化为float64了。
python-文件备份/拷贝
shutil.copy(sourceDir, targetDir)
os.path.join():路径拼接
networkx 读取txt或gml中的复杂网络数据
import networkx as nx
#抽取txt中的数据
def read_txt(data):
g = nx.read_edgelist("data", create_using=nx.DiGraph())
print(g.edges())
#抽取gml中的数据
#networkx可以直接通过函数从gml文件中读出数据
def read_gml(data):
H=nx.read_gml(data)
print(H.edges())
read_txt('D:\\Artifical\\平均度4\\SF2-4.txt')
print('---------------gml------------------')
read_gml('D:\\文档\\论文\\代码\\社区发现\\数据\\data\\adjnoun\\adjnoun.gml')
---------------------
原文:https://blog.csdn/qq_38266635/article/details/81743336
判断无向图连通性
while len(list(nx.dfs_edges(G)))!=G.number_of_nodes()-1:
G = RG(100, e)
print("not connected!")
networkx取邻接矩阵
def get_adj_matrix(G):
return nx.adjacency_matrix(G).todense()
todense()与toarray()
todense()返回一个矩阵,toarray()返回一个numpy数组。
np.random.choice
1、以p的概率,在a中取size个数,p值越大越可能被取到;2、当replace=True时,取值可重复
import numpy as np
a1=np.array([3,5,2.6,41.2,5.7])
a2 = np.random.choice(a=a1, size=3, replace=False, p=[0.2, 0.1, 0.3, 0.4, 0.0])
print(a2)
输出: array([41.2, 5. , 2.6])
random.sample(list, n),从列表中取n个样本
注意sample是属于random模块,而不是nump.random模块,二者不一样。
注意n必须是整数,返回一个列表。
关于二维数组求和的几种方法
a = [[1,2],[3,4],[5,6]]
1.sum(map(sum,a)) #first, map(func,a) 函数是对a中的每一个元素进行sum操作
解释一下map函数, map(fund, a) equals [func(i) for i in a] and return a list
2.sum(sum(i) for i in a) #second one
3.sum(sum(a[i]) for i in range(len(a))) #third one
4.reduce(lambda x,y:x+y , reduce(lambda x,y:x+y, a))
---------------------
作者:jinmingz
来源:CSDN
原文:https://blog.csdn/zjm750617105/article/details/51173032
版权声明:本文为博主原创文章,转载请附上博文链接!
reshape 与 .resize
- reshape:有返回值,所谓有返回值,即不对原始多维数组进行修改;
- resize:无返回值,所谓有返回值,即会对原始多维数组进行修改;
- 但是,numpy.resize(a, size)不会对原数组进行修改。
>> X = np.random.randn(2, 3)
>> X
array([[ 1.23077478, -0.70550605, -0.37017735],
[-0.61543319, 1.1188644 , -1.05797142]])
>> X.reshape((3, 2))
array([[ 1.23077478, -0.70550605],
[-0.37017735, -0.61543319],
[ 1.1188644 , -1.05797142]])
>> X
array([[ 1.23077478, -0.70550605, -0.37017735],
[-0.61543319, 1.1188644 , -1.05797142]])
>> X.resize((3, 2))
>> X
array([[ 1.23077478, -0.70550605],
[-0.37017735, -0.61543319],
[ 1.1188644 , -1.05797142]])
来自:https://blog.csdn/lanchunhui/article/details/51258503?utm_source=copy
- numpy.reshape
(1)通过reshape生成的新数组和原始数组公用一个内存,也就是说,假如更改一个数组的元素,另一个数组也将发生改变。
(2)reshape只能作用于能规整划分的数组。
>>> z = np.array([[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],[13, 14, 15, 16]])
>>> print(z)
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]
[13 14 15 16]]
>>> print(z.shape)
(4, 4)
>>> print(z.reshape(-1))
[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16]
>>> print(z.reshape(-1,1)) #我们不知道z的shape属性是多少,
#但是想让z变成只有一列,行数不知道多少,
#通过`z.reshape(-1,1)`,Numpy自动计算出有16行,
#新的数组shape属性为(16, 1),与原来的(4, 4)配套。
[[ 1]
[ 2]
[ 3]
[ 4]
[ 5]
[ 6]
[ 7]
版权声明:本文标题:【Python】收集的高级函数、功能 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1726377074h948132.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论