我不明白为什么numpy.genfromtxt
不能正确分割下面的字符串,delimiter=","
而它适用于我的块中的大多数其他字符串.
chunk[12968]
Out[143]: '2901869281,3279442095,2012-12-15T23:00:00.003Z,Sacramento,CA,R#3817874,United States,38.583,-121.498,11, 8, 6, 5, 1, 0, 2, 3, 3, 5, 3, 3, 2, 2, 6, 6, 1, 2, 3, 0, 1, 1, 0, 0, 2, 2, 2, 2, 1, 0, 0, 2, 1, 0, 1, 1, 2, 0, 3, 1, 1, 1, 1, 0, 0, 4, 0, 0, 0, 1, 3, 1, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 9, 0, 0, 0, …
Run Code Online (Sandbox Code Playgroud) 尽管有以前问题的建议:
使用numpy.genfromtxt()将-9999作为缺失值
我仍然无法处理以缺失值结尾的文本文件,
A.TXT:
1 2 3
4 5 6
7 8
Run Code Online (Sandbox Code Playgroud)
我已经尝试了多种选项安排missing_values
,filling_values
并且无法使其工作:
import numpy as np
sol = np.genfromtxt("a.txt",
dtype=float,
invalid_raise=False,
missing_values=None,
usemask=True,
filling_values=0.0)
print sol
Run Code Online (Sandbox Code Playgroud)
我想得到的是:
[[1.0 2.0 3.0]
[4.0 5.0 6.0]
[7.0 8.0 0.0]]
Run Code Online (Sandbox Code Playgroud)
但相反,我得到:
/usr/local/lib/python2.7/dist-packages/numpy/lib/npyio.py:1641: ConversionWarning: Some errors were detected !
Line #3 (got 2 columns instead of 3)
warnings.warn(errmsg, ConversionWarning)
[[1.0 2.0 3.0]
[4.0 5.0 6.0]]
Run Code Online (Sandbox Code Playgroud) 我有几个数据数字文件,其中小数点分隔符是逗号.所以我使用lambda函数进行转换:
import numpy as np
def decimal_converter(num_cols):
conv = dict((col, lambda valstr: \
float(valstr.decode('utf-8').replace(',', '.'))) for col in range(nb_cols))
return conv
data = np.genfromtxt("file.csv", converters = decimal_converter(3))
Run Code Online (Sandbox Code Playgroud)
文件中的数据是这样的:
0; 0,28321815; 0,5819178
1; 0,56868281; 0,85621369
2; 0,24022026; 0,53490058
3; 0,63641921; 0,0293904
4; 0,65585546; 0,55913776
Run Code Online (Sandbox Code Playgroud)
这里有我的函数,decimal_converter
我需要指定我的文件包含的列数.通常我不需要指定numpy.genfromtxt
文件中的列数,而是需要查找所有列.即使使用转换器选项,我也希望保留此功能.
我正在尝试使用Numpy genfromtxt导入一个简单的CSV文件,但无法将第一列的数据转换为日期。
这是我的代码:
import numpy as np
from datetime import datetime
str2date = lambda x: datetime.strptime(x, '%Y-%m-%d %H:%M:%S')
data = np.genfromtxt('C:\\\\data.csv',dtype=None,names=True, delimiter=',', converters = {0: str2date})
Run Code Online (Sandbox Code Playgroud)
我在str2date中收到以下错误:
TypeError:必须为str,而不是字节
问题是有很多列,所以我宁愿避免指定所有列类型(基本上是数字)。
我的文件如下所示:
1497484825;34425;-4,28,-14;-4,28,-14;-4,28,-14;-4,28,-14;-4,28,-14;-4,28,-14
1497484837;34476;-4,28,-14;-4,28,-14;-4,28,-14;-4,28,-14;-4,28,-14;-4,28,-14
Run Code Online (Sandbox Code Playgroud)
我想使用 np.genfromtxt 将其导入 numpy 数组。最大的问题是它有“;” 和 ',' 作为分隔符。我的尝试:
import numpy as np
import io
s = io.StringIO(open('2e70dfa1.csv').read().replace(';',','))
data = np.genfromtxt(s,dtype=int,delimiter=',')
Run Code Online (Sandbox Code Playgroud)
我收到错误:
类型错误:无法将“bytes”对象隐式转换为 str
怎么解决呢?我也愿意接受全新(更好)的想法。
我正在尝试从文件中生成一个数组numpy.genfromtxt
。
文件是这样的:
16.37.235.200|59009|514|16.37.235.153|
17.37.235.200|59009|514|18.37.235.153|
Run Code Online (Sandbox Code Playgroud)
我得到一个像这样的数组:
['16.37.235.200' '17.37.235.200']
Run Code Online (Sandbox Code Playgroud)
但我希望数组是这样的:
[16.37.235.200,17.37.235.200]
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 NumPy 数组中加载一个 csv 文件以进行机器学习。到目前为止,我一直使用 int 或 float 数据,但我当前的 csv 包含 string、float 和 int,所以我在 dtype 参数方面遇到了一些麻烦。我的数据集有 41188 个样本和 8 个特征,例如:
47;"university.degree";"yes";176;1;93.994;-36.4;4.857;"no"
Run Code Online (Sandbox Code Playgroud)
我知道如果我指定 dtype=None 类型将由每列的内容确定:
data = np.genfromtxt(filename, dtype=None, delimiter=";", skip_header=1)
Run Code Online (Sandbox Code Playgroud)
但它显然不起作用。首先, genfromtxt 的结果是一个具有以下形状的 numpy ndarray:
In [2]: data.shape
Out[2]: (41188,)
Run Code Online (Sandbox Code Playgroud)
虽然我期待 (41188,8)
相反,如果我使用默认的 dtype:
data2 = np.genfromtxt(filename, delimiter=";", skip_header=1)
Run Code Online (Sandbox Code Playgroud)
我获得以下数据形状:
In [4]: data2.shape
Out[4]: (41188,8)
Run Code Online (Sandbox Code Playgroud)
其次,使用 dtype=None 我获得以下弃用警告:
VisibleDeprecationWarning: Reading unicode strings without specifying the encoding argument is deprecated. Set the encoding, use None for the system default.
Run Code Online (Sandbox Code Playgroud)
我可以通过使用来修复(是否正确?):
encoding='ASCII' …
Run Code Online (Sandbox Code Playgroud) 我是numpy的新手,我很难将CSV读入带有genfromtxt的numpy数组.
我在网上找到了一个我正在使用的CSV文件作为示例.它是浮子和弦的混合物.它在这里:http://pastebin.com/fMdRjRMv
我正在使用numpy通过pylab(通过:ipython -pylab在Ubuntu系统上初始化).numpy.version.version是1.3.0.
这是我做的:
示例#1:
data = genfromtxt("fMdRjRMv.txt", delimiter=',', dtype=None)
data.shape
(374, 15)
data[10,10] ## Take a look at an example element
'30'
type(data[10,10])
type 'numpy.string_'
Run Code Online (Sandbox Code Playgroud)
CSV文件中没有错误的引号,所以我不知道为什么它应该认为该数字是一个字符串.有谁知道为什么会这样?
示例#2(跳过第一行):
data = genfromtxt("fMdRjRMv.txt",delimiter =',',dtype = None,skiprows = 1)
data.shape
(373)
有谁知道为什么它不能将所有这些都读成一维数组?
非常感谢!
让我说我有一个愚蠢的文本文件与内容:
Year Recon Observed
1505 162.38 23
1506 46.14 -9999
1507 147.49 -9999
Run Code Online (Sandbox Code Playgroud)
-9999
用于表示缺失值(不要问).
所以,我应该能够将其读入一个Numpy数组:
import numpy as np
x = np.genfromtxt("file.txt", dtype = None, names = True, missing_values = -9999)
Run Code Online (Sandbox Code Playgroud)
让我所有的小朋友-9999
变成numpy.nan.但是,我得到:
>>> x
array([(1409, 112.38, 23), (1410, 56.14, -9999), (1411, 145.49, -9999)],
dtype=[('Year', '<i8'), ('Recon', '<f8'), ('Observed', '<i8')])
Run Code Online (Sandbox Code Playgroud)
... 那是不对的...
我错过了什么吗?
我对numpy.genfromtxt函数有一个非常基本的问题。我使用的是Enthought Canopy软件包:我应该在哪里保存要使用的file.txt,或者如何告诉Python在哪里寻找?使用IDLE时,我只是将文件保存在预设文件夹中,例如C:\ Users \ Davide \ Python \ data.txt,得到的是
>>> import numpy as np
>>> np.genfromtxt('data.txt')
array([[ 33.1 , 32.6 , 18.2 , 17.9 ],
[ 32.95, 32.7 , 17.95, 17.9 ],
[ 32.9 , 32.6 , 18. , 17.9 ],
[ 33. , 32.65, 18. , 17.9 ],
[ 32.95, 32.65, 18.05, 17.9 ],
[ 33. , 32.6 , 18. , 17.9 ],
[ 33.05, 32.7 , 18. , 17.9 ],
[ 33.05, 32.5 , 18.1 , 17.9 ], …
Run Code Online (Sandbox Code Playgroud)