Python_Tips[1]

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 np
a=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 matplotlib
import matplotlib.pyplot as plt
fig = plt.figure(1)
#一开始建立一个画板句柄
ax = fig.add_subplot(111)
#建立子图的句柄,
ax.scatter(dataMat[:,0], dataMat[:,1], marker='^', s=90)
#画散点图,变量x,y
fig = 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值