Python_Tips[1]

来源:互联网 发布:淘宝 发货地不符 编辑:程序博客网 时间:2024/05/16 06:52

Python_Tips[1]


Find替代函数

matlab里面的find真的是很方便,与find对应的在python.numpy里面, 有where函数,但是感觉能力有限,不太方便。

比如matlab中,

a[a>6]=6

或者

label=find(a>6)a[label]=6

可以轻松替换掉大于6的数字。
label[1]找到第一个大于6的值得标号

而在python中,今天看到一个好方法,

import numpy as npa=np.random.rand(4,5)

对象是array的话
也是可以

a[a>0.5]=1

也可以

a[nonzero(a>0.5)]=1

找某行第一次超过某值的标号

labels=nonzero(a[:,0]>0.7)[0][0]

nonzero返回的是n维度的矩阵,对应于a的n维,上文的[0][0]代表第一维的第一个值。


数据的一般处理

fr = open(fileName)stringArr = [line.strip().split(delim) for line in fr.readlines()]#str.strip()去除首尾的空格还包括最后讨厌的回车哦#str.split(',')以,号分隔,返回分隔后的字符串列表#还可以添加一些if条件语句去除空行, 如if line.strip()==''datArr = [map(float,line) for line in stringArr]#map函数可以批量将字符矩阵映射到想要的类型上。以前不知道,搞得很麻烦。#但这里注意stringArr是一个二维列表哦,才能这样做。一维的直接map就可以了。fr.close()#然后就有了准备好的矩阵,好开心。

画图的一般步骤

一开始并不知道面向对象语言是怎么画图的

import matplotlibimport matplotlib.pyplot as pltfig = plt.figure(1)#一开始建立一个画板句柄ax = fig.add_subplot(111)#建立子图的句柄,ax.scatter(dataMat[:,0], dataMat[:,1], marker='^', s=90)#画散点图,变量x,yfig = plt.figure(2)#再画一张图ax2 = fig.add_subplot(111)ax2.scatter(dataMat[:,0], dataMat[:,1], marker='^', s=900)ax2.scatter(reconMat[:,0],reconMat[:,1],marker='o', s=50, c='red')plt.show()#有且只能一起展示出来
0 0
原创粉丝点击