Python 将从文件读取的int或float列表转换为numpy数组
我必须从文件中读取一堆int值,并将其存储在numpy数组中。我就是这样做的:Python 将从文件读取的int或float列表转换为numpy数组,python,numpy,parsing,file-processing,Python,Numpy,Parsing,File Processing,我必须从文件中读取一堆int值,并将其存储在numpy数组中。我就是这样做的: el_connect = np.zeros([NEls,3],dtype=int) for i in range(0,NEls): connct = file.readline().strip().split() for j in range(0,len(connct)): el_connect[i,j] = int(connct[j]) 我现在就是这样做的。有没有更好的方法可以消除
el_connect = np.zeros([NEls,3],dtype=int)
for i in range(0,NEls):
connct = file.readline().strip().split()
for j in range(0,len(connct)):
el_connect[i,j] = int(connct[j])
我现在就是这样做的。有没有更好的方法可以消除第二个for循环
关于这一点,我还有其他问题:
您可以通过使用
np.genfromtxt()
假设空格分隔的值(我从上面的代码推断)来摆脱这两个循环
np.genfromtxt()
为数组推断np.float64
,前提是混合了int
s和float
s,但如果要明确描述可以使用的类型:
np.genfromtxt(StringIO(data), [np.int32, np.int32, np.float, np.int32])
Out[]:
array([(1, 2, 2.2, 3), (3, 4, 4.1, 2)],
dtype=[('f0', '<i4'), ('f1', '<i4'), ('f2', '<f8'), ('f3', '<i4')])
np.genfromtxt(StringIO(数据),[np.int32,np.int32,np.float,np.int32])
出[]:
数组([(1,2,2.2,3),(3,4,4.1,2)],
dtype=[('f0',您的NEls
变量是什么?您可以始终使用列表理解进行优化。此外,range()
默认从0开始,因此您可以只指定上限(不包括在内)。如果我设置了必须读入特定数组的行数,该怎么办?例如,我有一个变量“NEls”,它包含数组的行数。np.genfromtxt()
有一个max_rows
参数,所以只要设置max_rows=NEIs
,如果需要将它分块放入NEIs
中,则将其全部读入,然后只需重塑()。
np.genfromtxt(StringIO(data), [np.int32, np.int32, np.float, np.int32])
Out[]:
array([(1, 2, 2.2, 3), (3, 4, 4.1, 2)],
dtype=[('f0', '<i4'), ('f1', '<i4'), ('f2', '<f8'), ('f3', '<i4')])