对于模式识别中的各个方向,我个人觉得就是传感器不同,图像处理用的是视觉、肌电用的是肌电贴、脑电用的是脑电采集设备、语音用的是麦克风。。。最终都是转换成对数据的处理,如何从看似杂乱无章的数据中提取有用的信息,并进行分类操作等,就是特征提取。特征提取有很多种方法,这里就不说了,我也是刚刚起步,先把实验数据存到numpy数组中才是最基础的~~
一般来说做实验的时候把实验数据保存txt文件中,然后利用实验数据进行离线的训练及测试。下面的数据是利用MYO手环做肌电实验保存的。
还好python有强大的列表功能,strip(),split()函数可以帮助我们完成这项任务。先简单介绍一下这两个函数:
strip(rm):删除s字符串中开头、结尾处,rm字符。当rm为空时默认删除空白符(包括'\n', '\r', '\t', ' ')
split(del):通过指定分隔符(del)对字符串进行切片,如果参数num有指定值,则仅分隔num个子字符串。
import numpy as np
file = open("1.txt","r")
list_arr = file.readlines()
l = len(list_arr)
for i in range(l):
list_arr[i] = list_arr[i].strip()
list_arr[i] = list_arr[i].strip('[]')
list_arr[i] = list_arr[i].split(", ")
a = np.array(list_arr)
a = a.astype(int)
print (a)
file.close()
[[ -3 3 2 ..., -2 -6 -4]
[ 2 9 -64 ..., -10 14 -2]
[ -1 -1 -20 ..., 13 -6 1]
...,
[ 0 -38 -23 ..., 1 -1 0]
[-11 4 -56 ..., 0 -1 -6]
[-12 -51 -75 ..., 2 0 -4]]
结果是一个二位数组,这样后面我们对这个数组进行一些科学计算操作就会变得很方便了。
这种方法是我最开始写的,获取列表list_arr的长度进行循环,这是传统的c语言的思想,接触python后,列表有自己风格的迭代:
import numpy as np
file = open("1.txt","r")
list_arr = file.readlines()
lists = []
for index,x in enumerate(list_arr):
x = x.strip()
x = x.strip('[]')
x = x.split(", ")
lists.append(x)
a = np.array(lists)
a = a.astype(int)
print (a)
file.close()
当然,对于字符串操作还有一个利器:正则表达式!
import numpy as np
import re
file = open("1.txt","r")
list_arr = file.readlines()
lists = []
r = '[’,[\\]]'
for index,x in enumerate(list_arr):
a = re.sub(r,'',x)
c = a.strip()
c = c.split()
lists.append(c)
m = np.array(lists)
m = m.astype(int)
print (m)
file.close()
如果不了解正则表达式又想用它来删除字符串中特定字符的话,这个是万能的,自己删吧!
r
=
'[’!"#$%&
\'
()*+,./:;<=>?@[
\\
]^_`{|}~]'
对于这三种方法,我进行了一下测试,发现前两种差距不大,正则表达式则慢很多。相比较而言的话,我更偏向于第二种方法,毕竟这才是python嘛~
由于初步学习,难免会有说错的地方,希望大家能批评指出!另外,代码也是存在很多不规范,代优化的地方,以后会慢慢改进的!最后附上测试代码,测试哪部分就把哪的注释给去掉就行了。
import time
import numpy as np
import re
start = time.time()
for y in range(1000):
file = open("1.txt","r")
list_arr = file.readlines()
'''
l = len(list_arr)
for i in range(l):
list_arr[i] = list_arr[i].strip()
list_arr[i] = list_arr[i].strip('[]')
list_arr[i] = list_arr[i].split(", ")
a = np.array(list_arr)
a = a.astype(int)
print (a)
'''
'''
lists = []
for x in list_arr:
x = x.strip()
x = x.strip('[]')
x = x.split(", ")
lists.append(x)
a = np.array(lists)
a = a.astype(int)
print (a)
'''
'''
lists = []
r='[’,[\\]]'
for index,x in enumerate(list_arr):
a = re.sub(r,'',x)
c = a.strip()
c = c.split()
lists.append(c)
m = np.array(lists)
m = m.astype(int)
print (m)
'''
file.close()
print ((time.time()-start)/1000)