标签: genfromtxt

如何在NumPy中将CSV数据读入记录数组?

我不知道是否有导入CSV文件的内容为记录阵列直接的方式,很多的方式是R的read.table(),read.delim()read.csv()家庭的进口数据与R的数据帧?

或者是使用csv.reader()然后应用类似的东西的最佳方法numpy.core.records.fromrecords()

python numpy scipy genfromtxt

377
推荐指数
11
解决办法
63万
查看次数

numpy.genfromtxt产生的元组看起来像元组,而不是2D数组 - 为什么?

我的运行genfromtxt方式如下:

date_conv = lambda x: str(x).replace(":", "/")
time_conv = lambda x: str(x)

a = np.genfromtxt(input.txt, delimiter=',', skip_header=4,
      usecols=[0, 1] + radii_indices, converters={0: date_conv, 1: time_conv})
Run Code Online (Sandbox Code Playgroud)

这个要点input.txt来自哪里.

当我查看结果时,它是一维数组而不是二维数组:

>>> np.shape(a)
(918,)
Run Code Online (Sandbox Code Playgroud)

它似乎是一组元组:

>>> a[0]
('06/03/2006', '08:27:23', 6.4e-05, 0.000336, 0.001168, 0.002716, 0.004274, 0.004658, 0.003756, 0.002697, 0.002257, 0.002566, 0.003522, 0.004471, 0.00492, 0.005602, 0.006956, 0.008442, 0.008784, 0.006976, 0.003917, 0.001494, 0.000379, 6.4e-05)
Run Code Online (Sandbox Code Playgroud)

如果我从genfromtxt调用中删除转换器规范,它可以正常工作并生成一个2D数组:

>>> np.shape(a)
(918, 24)
Run Code Online (Sandbox Code Playgroud)

python import numpy genfromtxt

34
推荐指数
1
解决办法
2万
查看次数

使用numpy.genfromtxt读取包含逗号的字符串的csv文件

我试图读取一个csv文件,numpy.genfromtxt但有些字段是包含逗号的字符串.字符串是引号,但是numpy没有将引号识别为定义单个字符串.例如,使用't.csv'中的数据:

2012, "Louisville KY", 3.5
2011, "Lexington, KY", 4.0
Run Code Online (Sandbox Code Playgroud)

代码

np.genfromtxt('t.csv', delimiter=',')
Run Code Online (Sandbox Code Playgroud)

产生错误:

ValueError:检测到一些错误!第2行(有4列而不是3列)

我正在寻找的数据结构是:

array([['2012', 'Louisville KY', '3.5'],
       ['2011', 'Lexington, KY', '4.0']], 
      dtype='|S13')
Run Code Online (Sandbox Code Playgroud)

查看文档,我没有看到任何处理此问题的选项.有没有办法用numpy做,或者我只需要用csv模块读取数据然后将其转换为numpy数组?

python numpy pandas genfromtxt

29
推荐指数
3
解决办法
4万
查看次数

Python:将字符串(科学计数法)转换为浮点数

我正在尝试使用numpy中的genfromtxt导入包含文本和数字的大型.csv文件.我只对两列感兴趣.我将大部分导入整理出来:

def importfile(root):
    data = root.entry.get()
    atw = np.genfromtxt(data, delimiter=",",
                        skip_header=1,
                        skip_footer=2,
                        autostrip=True,
                        usecols=(25,26),
                        dtype=("|S10"))
    elem = atw[:,0]
    concs = atw[:,1]

    print(elem)
    print(concs)
Run Code Online (Sandbox Code Playgroud)

分别输出elem和concs:

['Na2O' 'MgO' 'Al2O3' 'SiO2' 'P2O5' 'SO3' 'Cl' 'K2O' 'CaO' 'TiO2' 'Cr2O3'
'MnO' 'FeO' 'NiO' 'Cu2O' 'ZnO' 'Ga2O3' 'SrO' 'Y2O3']

['3.76E+00' '1.31E+01' '1.14E+01' '4.04E+01' '1.24E+00' '5.89E-02'
'2.43E-02' '1.53E+00' '1.49E+01' '2.87E+00' '6.05E-02' '1.96E-01'
'1.17E+01' '3.69E-02' '8.73E-03' '1.39E-02' '1.93E-03' '1.88E-01'
'5.58E-03']
Run Code Online (Sandbox Code Playgroud)

我已经尝试了许多不同的东西,用于将concs字符串转换为float,但它似乎不喜欢concs是科学记数法的事实....是否存在将concs值转换为float的方法?在此先感谢您的支持.

csv string floating-point data-conversion genfromtxt

19
推荐指数
1
解决办法
4万
查看次数

从文本文件中将数据读入numpy数组

我有一个包含一些元数据的文件,然后是一些由2列标题组成的实际数据.在numpy中使用genfromtxt之前,我是否需要分离这两种类型的数据?或者我可以以某种方式拆分数据吗?将文件指针放在标题上方的行尾,然后从那里尝试genfromtxt怎么样?谢谢文件的格式如下所示:

 &SRS
<MetaDataAtStart>
multiple=True
Wavelength (Angstrom)=0.97587
mode=assessment
background=True
issid=py11n2g
noisy=True
</MetaDataAtStart>
&END
Two Theta(deg)  Counts(sec^-1)
10.0    41.0
10.1    39.0
10.2    38.0
10.3    38.0
10.4    41.0
10.5    42.0
10.6    38.0
10.7    44.0
10.8    42.0
10.9    39.0
11.0    37.0
11.1    37.0
11.2    45.0
11.3    36.0
11.4    37.0
11.5    37.0
11.6    40.0
11.7    44.0
11.8    45.0
11.9    46.0
12.0    44.0
12.1    40.0
12.2    41.0
12.3    39.0
12.4    41.0
Run Code Online (Sandbox Code Playgroud)

python arrays file-io numpy genfromtxt

13
推荐指数
1
解决办法
7万
查看次数

genfromtxt()中的NumPy dtype问题,以字节字符串形式读取字符串

我想在标准的ascii csv文件中读入numpy,它由浮点数和字符串组成.

例如,

ZINC00043096,C.3,C1,-0.1540,methyl
ZINC00043096,C.3,C2,0.0638,methylene
ZINC00043096,C.3,C4,0.0669,methylene
ZINC00090377,C.3,C7,0.2070,methylene
...
Run Code Online (Sandbox Code Playgroud)

无论我尝试什么,结果阵列看起来都像

例如,

all_data = np.genfromtxt(csv_file, dtype=None, delimiter=',')


[(b'ZINC00043096', b'C.3', b'C1', -0.154, b'methyl')
 (b'ZINC00043096', b'C.3', b'C2', 0.0638, b'methylene')
 (b'ZINC00043096', b'C.3', b'C4', 0.0669, b'methylene')
Run Code Online (Sandbox Code Playgroud)

但是,我想保存字节字符串转换的步骤,并想知道如何直接在字符串列中读取常规字符串.

我尝试了numpy.genfromtxt()文档中的几个东西,例如,dtype='S,S,S,f,S'或者dtype='a25,a25,a25,f,a25',但是这里没有任何帮助.

我很害怕,但我想我只是不明白dtype转换是如何工作的......如果你能在这里给我一些暗示会很好!

谢谢

python numpy genfromtxt

11
推荐指数
2
解决办法
1万
查看次数

numpy中有"1列而不是......"错误

我正在研究以下代码,用于在火车和测试集上执行随机森林分类;

from sklearn.ensemble import RandomForestClassifier
from numpy import genfromtxt, savetxt

def main():
    dataset = genfromtxt(open('filepath','r'), delimiter=' ', dtype='f8')   
    target = [x[0] for x in dataset]
    train = [x[1:] for x in dataset]
    test = genfromtxt(open('filepath','r'), delimiter=' ', dtype='f8')

    rf = RandomForestClassifier(n_estimators=100)
    rf.fit(train, target)
    predicted_probs = [[index + 1, x[1]] for index, x in enumerate(rf.predict_proba(test))]

    savetxt('filepath', predicted_probs, delimiter=',', fmt='%d,%f', 
            header='Id,PredictedProbability', comments = '')

if __name__=="__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

但是我在执行时遇到以下错误;

---->      dataset = genfromtxt(open('C:/Users/Saurabh/Desktop/pgm/Cora/a_train.csv','r'), delimiter='', dtype='f8')

ValueError: Some errors were detected !
    Line #88 …
Run Code Online (Sandbox Code Playgroud)

python numpy genfromtxt

11
推荐指数
3
解决办法
3万
查看次数

使用Python读取目录中的所有csv文件

我希望这不是微不足道的,但我想知道以下内容:

如果我有一个包含n个 csv文件的特定文件夹,我怎么能一次一个地迭代读取所有文件,并对它们的值执行一些计算?

例如,对于单个文件,我执行类似的操作并对x数组执行一些计算:

import csv
import os

directoryPath=raw_input('Directory path for native csv file: ') 
csvfile = numpy.genfromtxt(directoryPath, delimiter=",")
x=csvfile[:,2] #Creates the array that will undergo a set of calculations
Run Code Online (Sandbox Code Playgroud)

我知道我可以检查csv给定文件夹中有多少文件(请点击此处):

import glob
for files in glob.glob("*.csv"):
    print files 
Run Code Online (Sandbox Code Playgroud)

但是我没有弄清楚如何将numpy.genfromtxt()函数嵌套在for循环中,所以我读入了一个目录的所有csv文件,由我来指定.

编辑

我只有的文件夹jpgcsv文件.后者是命名的eventX.csv,其中X的范围是1到50.因此,for我所指的循环应该按照它们的方式考虑文件名.

python csv for-loop numpy genfromtxt

10
推荐指数
3
解决办法
5万
查看次数

NumPy genfromtxt:正确使用fill_missing

我正在尝试处理保存到CSV的数据,这些数据可能在未知数量的列中丢失了值(最多约30个).我试图使用genfromtxt's filling_missing参数将这些缺失值设置为'0' .这是在Win 7上运行ActiveState ActivePython 2.7 32位的numpy 1.6.2的最小工作示例.

import numpy

text = "a,b,c,d\n1,2,3,4\n5,,7,8"
a = numpy.genfromtxt('test.txt',delimiter=',',names=True)
b = open('test.txt','w')
b.write(text)
b.close()
a = numpy.genfromtxt('test.txt',delimiter=',',names=True)
print "plain",a

a = numpy.genfromtxt('test.txt',delimiter=',',names=True,filling_values=0)
print "filling_values=0",a

a = numpy.genfromtxt('test.txt',delimiter=',',names=True,filling_values={1:0})
print "filling_values={1:0}",a

a = numpy.genfromtxt('test.txt',delimiter=',',names=True,filling_values={0:0})
print "filling_values={0:0}",a

a = numpy.genfromtxt('test.txt',delimiter=',',names=True,filling_values={None:0})
print "filling_values={None:0}",a
Run Code Online (Sandbox Code Playgroud)

结果如下:

plain [(1.0, 2.0, 3.0, 4.0) (5.0, nan, 7.0, 8.0)]
filling_values=0 [(1.0, 2.0, 3.0, 4.0) (5.0, nan, 7.0, 8.0)]
filling_values={1:0} [(1.0, 2.0, 3.0, 4.0) (5.0, 0.0, 7.0, 8.0)]
filling_values={0:0} [(1.0, 2.0, …
Run Code Online (Sandbox Code Playgroud)

python csv numpy genfromtxt

8
推荐指数
1
解决办法
2788
查看次数

NumPy:旧数据描述符和新数据描述符的大小不匹配

在阅读CSV文件时,我遇到了NumPy 1.10.2的以下问题.我无法弄清楚如何给出明确的数据类型genfromtxt.

下面是CSV, minimal.csv:

x,y
1,hello
2,hello
3,jello
4,jelly
5,belly
Run Code Online (Sandbox Code Playgroud)

在这里,我尝试用genfromtxt阅读它:

import numpy
numpy.genfromtxt('minimal.csv', dtype=(int, str))
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

import numpy
numpy.genfromtxt('minimal.csv', names=True, dtype=(int, str))
Run Code Online (Sandbox Code Playgroud)

无论如何,我得到错误:

Traceback (most recent call last):
  File "visualize_numpy.py", line 39, in <module>
    numpy.genfromtxt('minimal.csv', dtype=(int, str))
  File "/Users/xeli/workspace/myproj/env/lib/python3.5/site-packages/numpy/lib/npyio.py", line 1518, in genfromtxt
    replace_space=replace_space)
  File "/Users/xeli/workspace/myproj/env/lib/python3.5/site-packages/numpy/lib/_iotools.py", line 881, in easy_dtype
    ndtype = np.dtype(ndtype)
ValueError: mismatch in size of old and new data-descriptor
Run Code Online (Sandbox Code Playgroud)

或者,我试过:

import numpy
numpy.genfromtxt('minimal.csv', dtype=[('x', int), ('y', str)])
Run Code Online (Sandbox Code Playgroud)

哪个投掷:

Traceback (most recent …
Run Code Online (Sandbox Code Playgroud)

python csv numpy genfromtxt

7
推荐指数
1
解决办法
1409
查看次数