我在pandas模块上读取CSV(或txt文件)时遇到问题因为numpy的loadtxt函数需要花费太多时间,所以我决定使用pandas read_csv.
我想从txt文件中创建一个numpy数组,其中四列用空格分隔,并且行数非常多(例如,256 ^ 3.在本例中,它是64 ^ 3).
问题是我不知道为什么,但似乎pandas的read_csv总是跳过csv(txt)文件的第一行(第一行),从而减少一个数据.
这是代码.
from __future__ import division
import numpy as np
import pandas as pd
ngridx = 4
ngridy = 4
ngridz = 4
size = ngridx*ngridy*ngridz
f = np.zeros((size,4))
a = np.arange(size)
f[:, 0] = np.floor_divide(a, ngridy*ngridz)
f[:, 1] = np.fmod(np.floor_divide(a, ngridz), ngridy)
f[:, 2] = np.fmod(a, ngridz)
f[:, 3] = np.random.rand(size)
print f[0]
np.savetxt('Testarray.txt',f,fmt='%6.16f')
g = pd.read_csv('Testarray.txt',delimiter=' ').values
print g[0]
print len(g[:,3])
Run Code Online (Sandbox Code Playgroud)
显示为输出的f [0]和g [0]有很多,但它没有,表明大熊猫正在跳过第一行Testarray.txt.此外,加载文件g的长度小于数组的长度f.
我需要帮助. …
我有一个python代码,它导入4列txt文件,数字前三列是x,y,z坐标,第四列是该坐标的密度.
下面是读取的代码,转换为ndarray,傅里叶变换该字段,计算距离原点的距离(k =(0,0,0))和变换后的坐标,并取平均值并绘制它们.感谢pandas(用于数据分析的python库)和python FFT,加载256 ^ 3行和傅里叶变换非常快,并在几秒钟内完成.
但是,将加载的txt转换为numpy ndarray,计算平均密度(每个坐标的平均值),以及计算距离原点的距离(k =(0,0,0))需要很长时间.
我认为问题是最后的部分,但我无法弄清楚优化它的方法.
我有一个32核心机器的资源.
有人可以教我如何加速,使它成为一个多进程代码,或类似的东西,以便这些可以很快完成?谢谢.
(如果您是宇宙学家并且需要此代码,您可以使用它,但如果可以,请与我联系.谢谢)
from __future__ import division
import numpy as np
ngridx = 128
ngridy = 128
ngridz = 128
maxK = max(ngridx,ngridy,ngridz)
#making input file
f = np.zeros((ngridx*ngridy*ngridz,4))
i = 0
for i in np.arange(len(f)):
f[i][0] = int(i/(ngridy*ngridz))
f[i][1] = int((i/ngridz))%ngridy
f[i][2] = int(i%ngridz)
f[i][3] = np.random.rand(1)
if i%1000000 ==0:
print i
#This takes forever
#end making input file
#Thanks to Mike,
a = f[:,3].reshape(ngridx,ngridy,ngridz)
avg =np.sum(f[:,3])/len(f)
a /= …Run Code Online (Sandbox Code Playgroud) 我正在使用vim,我想替换
&\\ \hline为\\ \hline
Can有人可以教我如何做到这一点吗?
%s/\&\\/\\/gc没用.这是为乳胶桌.