python - 关于NumPy数组操作的问题
本文介绍了python - 关于NumPy数组操作的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
['000001_2017-03-17.csv', '000001_2017-03-20.csv',
'000002_2017-03-21.csv', '000002_2017-03-22.csv',
'000003_2017-03-23.csv', '000004_2017-03-24.csv']
numpy数组,总共有几个万个元素。现在想保留每个元素前面的编号000001之类的,并且去掉重复,只保留唯一的一个编号。结果应该是['000001','000002','000003','000004']
除了用for语句实现外,有没有更高效的办法?
解决方案
写个NumPy的吧~
python3
>>> import numpy as np
>>> a = np.array(['000001_2017-03-17.csv', '000001_2017-03-20.csv',
'000002_2017-03-21.csv', '000002_2017-03-22.csv',
'000003_2017-03-23.csv', '000004_2017-03-24.csv'])
>>> b = np.unique(np.fromiter(map(lambda x:x.split('_')[0],a),'|S6'))
>>> b
array([b'000001', b'000002', b'000003', b'000004'],
dtype='|S6')
还可以这样写:np.frompyfunc
'|S6'
是以6个字节存储字符串
'<U6'
是以6个小端序Unicode字符
存储字符串
>>> b = np.array(np.unique(np.frompyfunc(lambda x:x[:6],1,1)(a)),dtype='<U6')
>>> b
array(['000001', '000002', '000003', '000004'],
dtype='<U6')
这篇关于python - 关于NumPy数组操作的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文