numpy genfromtxt使用笔记

import numpy as np
np.indices((m,n)) 生成m*n矩阵 数值为0-m,0-n

–官网
https://numpy.org/doc/stable/user/basics.io.genfromtxt.html

genfromtxt运行两个主循环。第一个循环以字符串序列转换文件的每一行。第二个循环将每个字符串转换为适当的数据类型。此机制比单循环慢,但具有更大的灵活性。

–行拆分为列 delimiter 可以指定分隔符 宽度 None(多空格视为一个) 不会删除各个条目的前导或尾随空格

data = u"1, 2, 3\n4, 5, 6"
np.genfromtxt(StringIO(data), delimiter=",")
array([[ 1., 2., 3.],
[ 4., 5., 6.]])

data = ’ 1 2 3\n 4 5 67\n890123 4’
np.genfromtxt(StringIO(data),delimiter=3)
array([[ 1., 2., 3.],
[ 4., 5., 67.],
[890., 123., 4.]])

–存在 \n 与 无\n 对比

data = ’ 1 2 3 4 5 67 890 123 4’
np.genfromtxt(StringIO(data),delimiter=None)
array([ 1., 2., 3., 4., 5., 67., 890., 123., 4.])

np.genfromtxt(StringIO(data),delimiter=None)
array([[ 1., 2., 3.],
[ 4., 5., 67.],
[890., 123., 4.]])

– autostrip 去掉空格

data=‘1, abc, 2 \n 3 , xxx ,4’
np.genfromtxt(StringIO(data),delimiter=’,’,dtype=‘U5’)
array([[‘1’, ’ abc’, ’ 2’],
['3 ‘, ’ xxx ‘, ‘4’]], dtype=’<U5’)

np.genfromtxt(StringIO(data),delimiter=’,’,dtype=‘U5’,autostrip=True)
array([[‘1’, ‘abc’, ‘2’],
[‘3’, ‘xxx’, ‘4’]], dtype=’<U5’)

– 定义注释字符

data =’’’#
… #skip
… 1,2
… 3,4
… 5,6
… 7,8 #skip
… 8,0’’’

np.genfromtxt(StringIO(data),comments=’#’,delimiter=’,’)
array([[1., 2.],
[3., 4.],
[5., 6.],
[7., 8.],
[8., 0.]])

–指定skip_header skip_footer 跳过前x行 和 后y行

data =’\n’.join(str(i) for i in range(10))
np.genfromtxt(StringIO(data),)
array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])

np.genfromtxt(StringIO(data),skip_header=3,skip_footer=5)
array([3., 4.])

– usecols控制显示的列 命名列和非命名列

data=‘1 2 3\n 4 5 6’
np.genfromtxt(StringIO(data),usecols=(0,-1))
array([[1., 3.],
[4., 6.]])

np.genfromtxt(StringIO(data),usecols=(0,1,-1))
array([[1., 2., 3.],
[4., 5., 6.]])

np.genfromtxt(StringIO(data),names=‘a,b,c’,usecols=(‘a’,‘c’))
array([(1., 3.), (4., 6.)], dtype=[(‘a’, ‘<f8’), (‘c’, ‘<f8’)])

np.genfromtxt(StringIO(data),names=‘a,b,c’,usecols=(‘a , c’))
array([(1., 3.), (4., 6.)], dtype=[(‘a’, ‘<f8’), (‘c’, ‘<f8’)])

–设置列名称

data=StringIO(‘1 2 3\n 4 5 6’)
np.genfromtxt(data,dtype=[(_,int) for _ in ‘abc’])
array([(1, 2, 3), (4, 5, 6)],
dtype=[(‘a’, ‘<i4’), (‘b’, ‘<i4’), (‘c’, ‘<i4’)])

data=StringIO(‘1 2 3\n 4 5 6’)
np.genfromtxt(data,names=‘a,b,c’)
array([(1., 2., 3.), (4., 5., 6.)],
dtype=[(‘a’, ‘<f8’), (‘b’, ‘<f8’), (‘c’, ‘<f8’)])

–data被读取后已为空 data.seek(0)即可

np.genfromtxt(data,names=‘a,b,c’)
main:1: UserWarning: genfromtxt: Empty input file: “<_io.StringIO object at 0x06FF0F30>”
array([], dtype=[(‘a’, ‘<f8’), (‘b’, ‘<f8’), (‘c’, ‘<f8’)])

–指定跳过第一行 与 列名

data=StringIO(“so it goest\n#a b c\n1 2 3\n4 5 6”)
np.genfromtxt(data,skip_header=1,names=True)
array([(1., 2., 3.), (4., 5., 6.)],
dtype=[(‘a’, ‘<f8’), (‘b’, ‘<f8’), (‘c’, ‘<f8’)])

data=StringIO(“so it goest\n#a b c\n1 2 3\n4 5 6”)
np.genfromtxt(data,names=True)
array([(1., 2., 3.), (4., 5., 6.)],
dtype=[(‘so’, ‘<f8’), (‘it’, ‘<f8’), (‘goest’, ‘<f8’)])

–指定显示类型与列名称

data=StringIO(‘1 2 3\n 4 5 6’)
ndtype=[(‘a’,int),(‘b’,float),(‘c’,int)]
name=[‘A’,‘B’,‘C’]
name
[‘A’, ‘B’, ‘C’]

np.genfromtxt(data,names=name,dtype=ndtype)
array([(1, 2., 3), (4, 5., 6)],
dtype=[(‘A’, ‘<i4’), (‘B’, ‘<f8’), (‘C’, ‘<i4’)])

–不指定列名与指定不足时显示

data=StringIO(‘1 2 3\n 4 5 6’)
np.genfromtxt(data,dtype=(int,float,int))
array([(1, 2., 3), (4, 5., 6)],
dtype=[(‘f0’, ‘<i4’), (‘f1’, ‘<f8’), (‘f2’, ‘<i4’)])

data=StringIO(‘1 2 3\n 4 5 6’)
np.genfromtxt(data,dtype=(int,float,int),names=‘a’)
array([(1, 2., 3), (4, 5., 6)],
dtype=[(‘a’, ‘<i4’), (‘f0’, ‘<f8’), (‘f1’, ‘<i4’)])

–defaultfmt指定显示列名格式

np.genfromtxt(data,dtype=(int,float,int),defaultfmt=‘var_%02i’)
array([(1, 2., 3), (4, 5., 6)],
dtype=[(‘var_00’, ‘<i4’), (‘var_01’, ‘<f8’), (‘var_02’, ‘<i4’)])

–filling_values missing_values

data=‘N/A,2,3\n4,???’
kwargs=dict(delimiter=’,’,dtype=int,names=‘a,b,c’,missing_values={0:‘N/A’,‘b’:"",2:’???’},filling_values={0:0,‘b’:0,2:-999})
np.genfromtxt(StringIO(data),**kwargs)
array([(0, 2, 3), (4, 0, -999)],
dtype=[(‘a’, ‘<i4’), (‘b’, ‘<i4’), (‘c’, ‘<i4’)])

– 使用列转换函数

data=‘1,2.3%,45\n6,78.9%,0’
np.genfromtxt(StringIO(data),delimiter=’,’)
array([[ 1., nan, 45.],
[ 6., nan, 0.]])

convertfunc=lambda x:float(x.strip(b’%’))/100
np.genfromtxt(StringIO(data),converters={1:convertfunc},delimiter=’,’)
array([[1.00e+00, 2.30e-02, 4.50e+01],
[6.00e+00, 7.89e-01, 0.00e+00]])

好的,以下是您的问题的回答: 首先,您可以使用Python中的pandas库来下载“产品.xlsx”文件并将其转换为.csv文件。以下是代码示例: ```python import pandas as pd # 下载xlsx文件并转换为csv文件 df = pd.read_excel('产品.xlsx') df.to_csv('产品.csv', sep=',', index=False, encoding='utf-8') ``` 接下来,您可以使用numpy库中的genfromtxt()函数来导入.csv文件并将其转换为数组。以下是代码示例: ```python import numpy as np # 导入csv文件并转换为数组 data = np.genfromtxt('产品.csv', delimiter=',', dtype=None, encoding='utf-8') print(data) ``` 接下来,您可以使用numpy库中的sort()函数来按单价对数组进行排序。以下是代码示例: ```python # 按单价排序 data_sorted = np.sort(data, order='单价') print(data_sorted) ``` 最后,您可以使用numpy库中的各种统计函数来对数组进行各种统计分析。以下是代码示例: ```python # 按单价求和、求均值、求标准差、求方差、求最小值、求最大值、求累计和、求累计积等统计分析 print('单价总和:', np.sum(data_sorted['单价'])) print('单价均值:', np.mean(data_sorted['单价'])) print('单价标准差:', np.std(data_sorted['单价'])) print('单价方差:', np.var(data_sorted['单价'])) print('单价最小值:', np.min(data_sorted['单价'])) print('单价最大值:', np.max(data_sorted['单价'])) print('单价累计和:', np.cumsum(data_sorted['单价'])) print('单价累计积:', np.cumprod(data_sorted['单价'])) ``` 希望这些回答能够帮助您!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值