Python
python
dyhBUPT
这个作者很懒,什么都没留下…
展开
-
Numpy:矩阵拼接
矩阵拼接方法:np.append(arr,values,axis)np.concatenate(arrays,axis,out=None)np.stack(arrays,axis,out=None)np.hstack/vstack(tup)下面具体举例,注意输入和输出维度的关系。1. np.append(arr,values,axis)支持数组和数组或数组和数的拼接,不支持三个及以上数组的拼接,axis默认值为None# 两个(3,4)维度的数组a = np.array([ [原创 2020-09-19 20:02:12 · 19742 阅读 · 0 评论 -
Python:跨文件夹模块调用中的路径问题
本文介绍Python中跨文件夹调用时,产生的相对路径问题和模块搜索路径问题。1. 相对路径问题 假定我们的文件结构如下:myExperiments -> test_1 -> test_1.py -> img.jpg -> test_2 -> test_2.py 并且test_1.py中有如下函数,即读取img.jpg文件并返回其是否为None(为None表示读取失败):import cv2def read_image(): img = cv原创 2020-07-19 15:48:53 · 5220 阅读 · 0 评论 -
Numpy:np.isin()
numpy中腌膜(mask)功能是个十分实用的技巧,可以参考这篇文章。考虑以下场景: 给定一个数组和一个“集合”,该集合为数字构成的array_like类型,我们需要从该数组中锁定那些属于该集合的元素。 比如给定如下数组a和列表b,那么我们期待得到腌膜c:a = np.array([ [1,2,3], [4,5,6], [7,8,9]])b = [3,4,5,6...原创 2020-04-18 16:16:07 · 9680 阅读 · 0 评论 -
Numpy:单括号与多括号
今天使用Numpy时出现了一个bug,经过和同学的讨论才最终得以解决…1. 问题:给定数组:a = np.array([ [1,10,1], [2,20,2], [3,30,3], [2,40,4]])要求:如果某一行的第0个元素为2,那么将它的第1个元素改为100即期望输出为:[[ 1 10 1] [ 2 100 2] [ 3 ...原创 2020-04-17 11:37:59 · 3469 阅读 · 1 评论 -
Python dict:字典删除多个元素
关于删除字典的元素,有很多接口函数可用,如del、pop、popitem、clear等,详见官方文档和菜鸟教程下面介绍给定待删除键值的情况下,如何删除多个字典元素:d = {x:x for x in range(5)}popKeys = [2,3]for k in popKeys: d.pop(k)print(d)[Out]:{0: 0, 1: 1, 4: 4}或者,也可...原创 2020-04-14 17:25:00 · 13835 阅读 · 0 评论 -
Numpy:np.all() & np.any()
np.all() 和 np.any() 可以用于再ndarray中实现逻辑上“与”和“或”操作,这在制作ndarray的indices_mask时也很有用处PS:np.all(ndarray)/any(ndarray) 和 ndarray.all()/any() 是等价的方法官方接口和说明:def all(a, axis=None, out=None, keepdims=np._NoVal...原创 2020-03-22 18:10:24 · 2981 阅读 · 0 评论 -
Numpy:np.sort() & np.argsort()
numpy 中提供了丰富的数组排序方法,这里只列举最常用的函数和用法~1. np.sort()sort(a, axis=-1, kind=‘quicksort’, order=None):Return a sorted copy of an array.这里,axis指定排序的维度,默认-1指的是最后一个维度a = np.array([ [1,5,9], [4,2,6...原创 2020-03-08 20:25:45 · 1783 阅读 · 0 评论 -
Python bug:list.insert()无返回值
1. 问题场景:为一个“二维”list中每个“一维”list的开始位置插入一个新元素例:[[1,2,3], [4,5,6]] -> [[‘head’,1,2,3], [‘head’,4,5,6]]2. 错误方法a = [[1, 2, 3], [4, 5, 6]]a = [x.insert(0, 'head') for x in a]print(a)[Out]:[None, N...原创 2020-03-06 22:31:20 · 753 阅读 · 0 评论 -
Numpy :np.max & np.maximum
ps:np.min/np.minimum同理ps:这里只介绍最常用的功能,详细功能请查看官方文档1. np.max 计算一个数组中的最值(1)基础用法a = np.array([ [1, 2, 3], [4, 5, 6], [7, 8, 9]])print(np.max(a))print(np.max(a, axis=0))print(np.max(a, ...原创 2020-03-06 22:20:58 · 520 阅读 · 0 评论 -
os:重要函数辨析
python中的os库是一个强大实用的文件及目录处理库,这里辨析几个常见os的功能1. os.path.split() & os.path.splitext()(1)os.path.split() 将文件路径与文件名区分开,返回为元组path = '/data0/dyh/tmp/tmp/tmp.txt'print(os.path.split(path))[Out]:('/dat...原创 2020-03-05 10:52:22 · 206 阅读 · 0 评论 -
Python trick:[::] & reversed—列表的倒序遍历
1. 问题场景列表倒序遍历length = 10my_list = [i for i in range(length)]2. 实现方法2.1 rang()for i in range(length-1, -1, -1): tmp = my_list[i]2.2 reverse()for a in reversed(my_list): tmp = a2.3 [...原创 2020-01-13 20:31:49 · 417 阅读 · 0 评论 -
Python trick:filter—序列滤波
1. 问题场景删除列表中的正数部分my_list = [i for i in range(10)]for it in my_list: if it>0: my_list.remove(it)print(my_list)out: [0, 2, 4, 6, 8]2. 问题分析for … in 遍历中,是利用下标遍历的,这个下标从开始就固定了:0~9而随...原创 2020-01-11 17:14:10 · 660 阅读 · 0 评论 -
Python trick:zip—同时遍历多个等长列表
1. 问题场景同时遍历两个长度为length的列表2. 可选方案双层循环利用index单层循环访问利用zip单层循环访问3. 实现代码length = 100000a = list(np.random.rand(length))b = list(np.random.rand(length))time1 = time()# 方法一for i in a: for j...原创 2020-01-11 11:30:44 · 826 阅读 · 0 评论 -
Numpy trick:矩阵运算优化
1. 问题场景按pair-wise计算两组L维向量的平方差距离:输入矩阵维度为 a:M×L,b:N×L输出矩阵维度为 c:M×N,其中entry(i,j)为第i个L维a向量和第j个L维b向量间的平方差距离M, N, L = 10, 20, 50 a = np.ones((M, L), dtype=np.float32)b = np.ones((N, L), dtype=np.fl...原创 2020-01-09 21:50:06 · 1112 阅读 · 0 评论 -
Numpy trick:array[mask]
本文简介一个numpy中的小trick,即用一个dtype=boolean的list作为mask来读取np.array原理很简单,直接给示例:array1 = np.array([1,2,3,4])array2 = np.array([[1,2,3,4,5], [6,7,8,9,10], [11,12,13,14,15], ...原创 2020-01-05 13:13:25 · 1184 阅读 · 0 评论 -
Numpy IO:npy、npz
参考:菜鸟教程1. Numpy IONumpy 可以读写磁盘上的文本数据或二进制数据;NumPy 为 ndarray 对象引入了一个简单的文件格式:npy ,用于存储重建 ndarray 所需的数据、图形、dtype 和其他信息;另外,Numpy还引入了npz格式,用于保存多个数组文件;常用的 IO 函数有:save() 和 load() 函数是读写文件数组数据的两个主要函数,默认...原创 2020-01-05 10:36:08 · 441 阅读 · 0 评论 -
Json序列化(及其问题)
1. 将字典序列化为json文件def save_to_json(dict, out_path): dict_json = json.dumps(dict) f = open(out_path, 'w') f.write(dict_json) f.close()2. 加载json文件def get_json_data(json_path): with...原创 2020-01-04 17:40:03 · 577 阅读 · 0 评论 -
matplotlib:绘制简单图像
以绘制PR曲线为例绘制10张PR曲线p_list和r_list分别为每张PR曲线的precision点和recall点动态显示,每隔1秒绘制下一张图源码:# 循环绘制10类PR曲线def all_pr_curve(dict_path="res/"): for i in range(1,11): p_list, r_list = get_precision...原创 2020-01-03 20:20:33 · 367 阅读 · 2 评论 -
Python __call__() 方法
python中,在类中加入__call__() 方法,那么这个类的实例便可以当作一个方法来调用。我们举一个pytorch中的例子:下图是torchvision.transforms 中的一个类,用于将PIL Image或numpy.ndarray转化为tensor;其中,它实现了一个__call__(self,pic)方法,并返回F.to_tensor(pic)。这样,我们便可以将这个类当...原创 2019-11-20 14:15:58 · 258 阅读 · 0 评论