在这篇文章中,我们将带领您了解在Python中读取scipy/numpy中的csv文件的全貌,包括python用numpy读取csv文件的相关情况。同时,我们还将为您介绍有关Linux下Python科
在这篇文章中,我们将带领您了解在 Python 中读取 scipy/numpy 中的 csv 文件的全貌,包括python用numpy读取csv文件的相关情况。同时,我们还将为您介绍有关Linux下Python科学计算包numpy和SciPy的安装、Python 2.7中的Numpy、SciPy、MatPlotLib安装与配置、python numpy / scipy曲线拟合、Python Numpy 从文件中读取数据的知识,以帮助您更好地理解这个主题。
本文目录一览:- 在 Python 中读取 scipy/numpy 中的 csv 文件(python用numpy读取csv文件)
- Linux下Python科学计算包numpy和SciPy的安装
- Python 2.7中的Numpy、SciPy、MatPlotLib安装与配置
- python numpy / scipy曲线拟合
- Python Numpy 从文件中读取数据
在 Python 中读取 scipy/numpy 中的 csv 文件(python用numpy读取csv文件)
我在 python 中读取由制表符分隔的 csv 文件时遇到问题。我使用以下功能:
def csv2array(filename, skiprows=0, delimiter=''\t'', raw_header=False, missing=None, with_header=True): """ Parse a file name into an array. Return the array and additional header lines. By default, parse the header lines into dictionaries, assuming the parameters are numeric, using ''parse_header''. """ f = open(filename, ''r'') skipped_rows = [] for n in range(skiprows): header_line = f.readline().strip() if raw_header: skipped_rows.append(header_line) else: skipped_rows.append(parse_header(header_line)) f.close() if missing: data = genfromtxt(filename, dtype=None, names=with_header, deletechars='''', skiprows=skiprows, missing=missing) else: if delimiter != ''\t'': data = genfromtxt(filename, dtype=None, names=with_header, delimiter=delimiter, deletechars='''', skiprows=skiprows) else: data = genfromtxt(filename, dtype=None, names=with_header, deletechars='''', skiprows=skiprows) if data.ndim == 0: data = array([data.item()]) return (data, skipped_rows)
问题是 genfromtxt 抱怨我的文件,例如错误:
Line #27100 (got 12 columns instead of 16)
我不确定这些错误来自哪里。有任何想法吗?
这是导致问题的示例文件:
#Gene 120-1 120-3 120-4 30-1 30-3 30-4 C-1 C-2 C-5 genesymbol genedescENSMUSG00000000001 7.32 9.5 7.76 7.24 11.35 8.83 6.67 11.35 7.12 Gnai3 guanine nucleotide binding protein alphaENSMUSG00000000003 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 Pbsn probasin
有没有更好的方法来编写通用 csv2array 函数?谢谢。
答案1
小编典典查看 python CSV 模块:http ://docs.python.org/library/csv.html
import csvreader = csv.reader(open("myfile.csv", "rb"), delimiter=''\t'', quoting=csv.QUOTE_NONE)header = []records = []fields = 16if thereIsAHeader: header = reader.next()for row, record in enumerate(reader): if len(record) != fields: print "Skipping malformed record %i, contains %i fields (%i expected)" % (record, len(record), fields) else: records.append(record)# do numpy stuff.
Linux下Python科学计算包numpy和SciPy的安装
系统环境:
OS:RedHat5
Python版本:Python2.7.3
gcc版本:4.1.2
各个安装包版本:
scipy-0.11.0
numpy-1.6.2
nose-1.2.1
lapack-3.4.2
atlas-3.10.0
依赖关系:scipy的安装需要依赖于numpy、lapack、atlas(后两者都是线性代数工具包),而numpy和sci的测试程序的运行又依赖于nose,因此,整个安装过程必须要按顺序执行的,否则是无法执行下去的。
安装步骤:
1、安装nose
这个安装比较简单,解压缩nose的安装文件,进入nose的目录,直接运行setup.py即可:
tar -zxvf nose-1.2.1.tar.gz
cd nose-1.2.1
python setup.py install
2、安装lapack
由于最新版本的ATLAS可以直接集成lapack的安装压缩文件进行编译,因此,如果仅在python下使用的话,可以不用安装lapack。只需要下载压缩文件:lapack-3.4.2.tgz 即可。
3、安装ATLAS
这个的安装主要是配置一些选项,包括配置成64位库文件、位置无关的以及共享的链接库。详细的配置说明在atlas安装包 doc/ 下的pdf文件中。可查阅。
下面是我的安装过程:
tar -jxvf atlas3.10.0.tar.bz2
cd ATLAS
mkdir obj64
../configure -b 64 -Fa alg -fPIC -shared --prefix=/配置atlas的安装路径/atlas --with-netlib-lapack-tarfile=/lapack安装压缩文件存放的目录/lapack-3.4.2.tgz
(注:这个配置时间非常长,在Core i7 处理上,大概1个小时左右)
make
(下面是一些检查过程,保证没有问题之后再进行安装)
make check
make time
make install
至此,atlas安装完成。不过我们要记录下编译过程中所用的fortran编译器类型,这个信息在下面安装numpy和scipy的时候要用。还是在目录 obj64/ 下,执行
fgrep "F77 =" Make.inc
可以看到 F77 =
gfortran
记下这个编译器类型 gfortran.
4、安装numpy
numpy和scipy的安装过程都要显式的指明所用fortran编译器的类型,而且要与前面编译atlas时一致(在本文中即:gfortran),这一点非常重要,否则很多功能都会出错。
首先配置numpy目录下的site.cfg文件,指明atlas库的位置:
tar -zxvf numpy-1.6.2.tar.gz
cd numpy-1.6.2
cp site.cfg.example site.cfg
vim site.cfg
配置成如下格式:
[DEFAULT]
library_dirs = /usr/local/lib:/atlas的安装目录/atlas/lib
include_dirs = /usr/local/include:/atlas的安装目录/include
[blas_opt]
libraries = f77blas, cblas, atlas
[lapack_opt]
libraries = lapack, f77blas, cblas, atlas
[amd]
amd_libs = amd
[umfpack]
umfpack_libs = umfpack
接下来配置安装numpy所需要的Fortran编译器类型:
如果前面得到的Fortran编译器是gfortran的话,执行:
python setup.py build --fcompiler=gnu95
如果前面得到的Fortran编译器是g77的话,执行:
python setup.py build --fcompiler=gnu
然后执行
python setup.py install
安装完成
5、安装scipy
与安装numpy类似:
tar -zxvf scipy-0.11.0.tar.gz
cd scipy-0.11.0
vim site.cfg
配置成如下格式:
[DEFAULT]
library_dirs = /usr/local/lib:/atlas的安装目录/atlas/lib
include_dirs = /usr/local/include:/atlas的安装目录/include
[blas_opt]
libraries = f77blas, cblas, atlas
[lapack_opt]
libraries = lapack, f77blas, cblas, atlas
[amd]
amd_libs = amd
[umfpack]
umfpack_libs = umfpack
接下来配置安装numpy所需要的Fortran编译器类型:
如果前面得到的Fortran编译器是gfortran的话,执行:
python setup.py build --fcompiler=gnu95
如果前面得到的Fortran编译器是g77的话,执行:
python setup.py build --fcompiler=gnu
然后执行
python setup.py install
安装完成
然后可以在python下执行相应的测试程序:
python
>>> import nose
>>> import numpy
>>> import scipy
>>> numpy.test('full')
>>> scipy.test('full')
REF:
http://blog.sina.com.cn/s/blog_62dfdc740101aoo6.html
Python 2.7中的Numpy、SciPy、MatPlotLib安装与配置
Python安装完Numpy,SciPy和MatplotLib后,可以成为非常犀利的科研利器。网上关于这三个库的安装都写得非常不错,但是大部分人遇到的问题并不是如何安装,而是安装好后因为配置不当,在使用时总会出现import xxx error之类的错误。我也是自己摸索了很久才发现如何去正确配置的。下面就详细说下安装和配置的过程。
1.安装Python,这里选择2.7还是3.4都行,不过推荐使用2.7,毕竟现在的教程大部分还是基于2.7的,3.4跟2.7的语法还是略有不同,为了避免语法错误的麻烦,还是推荐大家使用2.7。下载地址为:https://www.python.org/downloads/
在使用NumPy进行学习统计计算时是枯燥的,大量的数据令我们很头疼,所以我们需要把它图形化显示。
Matplotlib是一个Python的图形框架,类似于MATLAB和R语言。
Matplotlib的官网地址是 http://matplotlib.org/ ,下载地址为 http://matplotlib.org/downloads.html,选择对应的版本即可安装,我选择的版本为 matplotlib-1.3.1.win32-py2.7.exe。
由于我之前已经安装过NumPy1.8,所以安装Matplotlib后只需要安装 dateutil 和 pyparsing,win32的安装文件可以在这里找到 http://www.lfd.uci.edu/~gohlke/pythonlibs/。
所有配套组件都安装成功后如果执行 import matplotlib.pyplot as plt 出错,请参考这篇文章http://blog.csdn.net/yang6464158/article/details/18546871#comments
安装 scipy,然后把C:\Python27\Lib\site-packages\scipy\lib中的six.py six.pyc six.pyo三个文件拷贝到C:\Python27\Lib\site-packages目录下。
import numpy as np
import matplotlib.pyplot as plt
N = 5
menMeans = (20, 35, 30, 35, 27)
menStd = (2, 3, 4, 1, 2)
ind = np.arange(N) # the x locations for the groups
width = 0.35 # the width of the bars
fig, ax = plt.subplots()
rects1 = ax.bar(ind, menMeans, width, color=''r'', yerr=menStd)
womenMeans = (25, 32, 34, 20, 25)
womenStd = (3, 5, 2, 3, 3)
rects2 = ax.bar(ind+width, womenMeans, width, color=''y'', yerr=womenStd)
# add some
ax.set_ylabel(''Scores'')
ax.set_title(''Scores by group and gender'')
ax.set_xticks(ind+width)
ax.set_xticklabels( (''G1'', ''G2'', ''G3'', ''G4'', ''G5'') )
ax.legend( (rects1[0], rects2[0]), (''Men'', ''Women'') )
def autolabel(rects):
# attach some text labels
for rect in rects:
height = rect.get_height()
ax.text(rect.get_x()+rect.get_width()/2., 1.05*height, ''%d''%int(height),
ha=''center'', va=''bottom'')
autolabel(rects1)
autolabel(rects2)
plt.show()
如果此时在缺少各种module,调用python的安装工具就可以了
最后出现的图是:
python numpy / scipy曲线拟合
我有一些要点,我正在努力为这些要点拟合曲线。我知道有scipy.optimize.curve_fit
功能,但是我不了解文档,即如何使用此功能。
我的观点: np.array([(1,1),(2,4),(3,(9,3)])
有人可以解释该怎么做吗?
Python Numpy 从文件中读取数据
测试文件内容(test1.txt)
hello,123,nihao
8,9,10
io,he,no
测试代码
import numpy
# dtype:默认读取数据类型,delimiter:分隔符
world_alcohol = numpy.genfromtxt("test1.txt", dtype=str, delimiter=",")
# 数据结构
print(type(world_alcohol))
# 数据内容
print(world_alcohol)
# 帮助文档
print(help(numpy.genfromtxt))
结果
<class ''numpy.ndarray''>
[[''hello'' ''123'' ''nihao'']
[''8'' ''9'' ''10'']
[''io'' ''he'' ''no'']]
...
我们今天的关于在 Python 中读取 scipy/numpy 中的 csv 文件和python用numpy读取csv文件的分享已经告一段落,感谢您的关注,如果您想了解更多关于Linux下Python科学计算包numpy和SciPy的安装、Python 2.7中的Numpy、SciPy、MatPlotLib安装与配置、python numpy / scipy曲线拟合、Python Numpy 从文件中读取数据的相关信息,请在本站查询。
本文标签: