import numpy as np
from io import StringIO
“”"
NumPy提供了几个函数来根据表格数据创建数组。我们将重点放在genfromtxt函数上。
genfromtxt的唯一强制参数是数据的来源。它可以是一个字符串,一串字符串或一个生成器。如果提供了单个字符串,则假定它是本地或远程文件的名称,或者带有read方法的开放文件类对象,例如文件或StringIO.StringIO对象。如果提供了字符串列表或生成器返回字符串,则每个字符串在文件中被视为一行。当传递远程文件的URL时,该文件将自动下载到当前目录并打开。
“”"
“”"
将行拆分为列
一旦文件被定义并打开进行读取,genfromtxt会将每个非空行分割为一串字符串。 空的或注释的行只是略过。 delimiter关键字用于定义拆分应该如何进行。
通常,单个字符标记列之间的分隔。例如,逗号分隔文件(CSV)使用逗号(,)或分号(;)作为分隔符:
“”"
data = “1, 2, 3\n4, 5, 6”
a = np.genfromtxt(StringIO(data), delimiter=’,’)
print(“以逗号为分隔符的例子:\n{}\n”.format (a))
data = " 1 2 3\n 4 5 67\n890123 4"
a = np.genfromtxt(StringIO(data), delimiter=3)
print(“固定宽度为3的例子 \n {} \n”.format (a))
data = “123456789\n 4 7 9\n 4567 9”
a = np.genfromtxt(StringIO(data), delimiter=(4, 3, 2))
print(“固定宽度分别为4,3,2 的例子 \n {} \n”.format (a))
data = “1, abc , 2\n 3, xxx, 4”
a = np.genfromtxt(StringIO(data), delimiter="," , dtype="|S5" )
print(“不自动去掉空格的例子 \n {} \n”.format (a))
a = np.genfromtxt(StringIO(data), delimiter=",", dtype="|S5", autostrip=True)
print(“加上autostrip参数不自动去掉空格的例子 \n {} \n”.format (a))
str1 = ‘’’#
1, 2
3, 4
5, 6 #This is the third line of the data
7, 8
9, 0 ‘’’
a = np.genfromtxt(StringIO(str1), comments="#", delimiter=",")
print(“定义#开头的作为注释行,自动略过,形成数组的例子: \n {} \n”.format (a ))
a=np.genfromtxt(StringIO(str1), comments="#", delimiter=",")
print(“显示完整的初始化的数组: \n {} \n”.format (a ))
b = np.genfromtxt(StringIO(str1), comments="#", delimiter="," , skip_header=0, skip_footer=2)
print("忽略掉头三个和末尾5个元素后输出B:\n{} ".format (b ))
c = a[2,1]
print(“输出C:\n{} \n”.format ©)
a = np.genfromtxt(StringIO(str1), comments="#", delimiter=",",usecols=[1])
print(“取0行到末尾:\n{} \n”.format ( a ) )
本代码执行结果:
PS C:\Users\ceb\python> & C:/Users/ceb/AppData/Local/Programs/Python/Python38/python.exe c:/Users/ceb/python/test1/numpyIO.py
以逗号为分隔符的例子:\n[[1. 2. 3.]
[4. 5. 6.]]
固定宽度为3的例子
[[ 1. 2. 3.]
[ 4. 5. 67.]
[890. 123. 4.]]
固定宽度分别为4,3,2 的例子
[[1234. 567. 89.]
[ 4. 7. 9.]
[ 4. 567. 9.]]
不自动去掉空格的例子
[[b’1’ b’ abc ’ b’ 2’]
[b’3’ b’ xxx’ b’ 4’]]
加上autostrip参数不自动去掉空格的例子
[[b’1’ b’abc’ b’2’]
[b’3’ b’xxx’ b’4’]]
定义#开头的作为注释行,自动略过,形成数组的例子:
[[1. 2.]
[3. 4.]
[5. 6.]
[7. 8.]
[9. 0.]]
显示完整的初始化的数组:
[[1. 2.]
[3. 4.]
[5. 6.]
[7. 8.]
[9. 0.]]
忽略掉头三个和末尾5个元素后输出B:
[[1. 2.]
[3. 4.]
[5. 6.]]
输出C:
6.0
取0行到末尾:
[2. 4. 6. 8. 0.]