python - 关于NumPy数组操作的问题

查看:109
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆