我发布了这个问题,因为我想知道我是否做错了什么严重的事情才能获得此结果。
我有一个中等大小的csv文件,尝试使用numpy加载它。为了说明,我使用python制作了文件:
import timeit
import numpy as np
my_data = np.random.rand(1500000, 3)*10
np.savetxt('./test.csv', my_data, delimiter=',', fmt='%.2f')
然后,我尝试了两种方法:numpy.genfromtxt,numpy.loadtxt
setup_stmt = 'import numpy as np'
stmt1 = """\
my_data = np.genfromtxt('./test.csv', delimiter=',')
"""
stmt2 = """\
my_data = np.loadtxt('./test.csv', delimiter=',')
"""
t1 = timeit.timeit(stmt=stmt1, setup=setup_stmt, number=3)
t2 = timeit.timeit(stmt=stmt2, setup=setup_stmt, number=3)
结果表明 t1 = 32.159652940464184,t2 = 52.00093725634724 。
但是,当我尝试使用matlab时:
tic
for i = 1:3
my_data = dlmread('./test.csv');
end
toc
结果显示:经过时间为 3.196465秒 。
我了解加载速度可能会有一些差异,但是:
任何输入将不胜感激。在此先多谢!
是的,将csv
文件读入numpy
非常慢。代码路径上有很多纯Python。这些天,即使我使用的是纯格式,numpy
我仍然会使用pandas
IO:
>>> import numpy as np, pandas as pd
>>> %time d = np.genfromtxt("./test.csv", delimiter=",")
CPU times: user 14.5 s, sys: 396 ms, total: 14.9 s
Wall time: 14.9 s
>>> %time d = np.loadtxt("./test.csv", delimiter=",")
CPU times: user 25.7 s, sys: 28 ms, total: 25.8 s
Wall time: 25.8 s
>>> %time d = pd.read_csv("./test.csv", delimiter=",").values
CPU times: user 740 ms, sys: 36 ms, total: 776 ms
Wall time: 780 ms
另外,在这种简单的情况下,您可以使用Joe
Kington在此处写的内容:
>>> %time data = iter_loadtxt("test.csv")
CPU times: user 2.84 s, sys: 24 ms, total: 2.86 s
Wall time: 2.86 s
还有一个Warren
Weckesser的textreader库,以防万一pandas
依赖太重:
>>> import textreader
>>> %time d = textreader.readrows("test.csv", float, ",")
readrows: numrows = 1500000
CPU times: user 1.3 s, sys: 40 ms, total: 1.34 s
Wall time: 1.34 s
问题内容: 我想使用NumPy执行以下MATLAB代码的等效项:。我将如何完成? 问题答案: 对于Matlab用户,这是一个更好(官方)的NumPy链接-恐怕其中的Mathesaurus已经过时了。 的numpy的当量是。 这适用于多个维度,并提供与matlab类似的结果。(Numpy给出了3d输出数组,正如您期望的那样-由于某些原因,matlab提供了2d输出-但内容相同)。 Matlab: 蟒
是否有一种惯用的方法来比较两个NumPy数组,它们将NaN视为彼此相等(但不等于NaN以外的任何东西)。 例如,我希望以下两个数组比较相等: 和以下两个数组进行比较: 我正在寻找一种可以产生标量布尔结果的方法。 以下方法可以做到这一点: 但它很笨重,并且创建了所有这些中间数组。 有没有一种方法可以更容易地观察眼睛,更好地利用记忆? 另外,如果有帮助的话,已知数组具有相同的形状和数据类型。
我有一个AVI视频,我需要处理在C++使用OpenCV。问题是OpenCV检测到的FrameRate为30,而在Matlab中,视频阅读器对相同的视频文件检测到的FrameRate为60。因此,与Matlab相比,C++只能提取一半的帧。 我尝试在C++中使用CV::VideoCapture::Set(CV::CAP_PROP_FPS)将FPS设置为60,但这并不影响它。我读到它也与视频捕获后端有
JavaScript 有两种方式判断两个值是否相等。 等于操作符 等于操作符由两个等号组成:== JavaScript 是弱类型语言,这就意味着,等于操作符会为了比较两个值而进行强制类型转换。 "" == "0" // false 0 == "" // true 0 == "0"
问题内容: 与常规Python列表相比,NumPy有什么优势? 我有大约100个金融市场系列,我将创建一个100x100x100 = 1百万个单元的多维数据集数组。我将每个x与y和z回归(3变量),以用标准误差填充数组。 我听说对于“大型矩阵”,出于性能和可伸缩性的原因,我应该使用NumPy而不是Python列表。事实是,我知道Python列表,它们似乎对我有用。 如果我转到NumPy,会有什么好
原文:NumPy for Matlab users 介绍 MATLAB®和 NumPy/SciPy 有很多共同之处。但是也有很多不同之处。创建NumPy和SciPy是为了用Python以最自然的方式进行数值和科学计算,而不是 MATLAB® 的克隆版。本章节旨在收集有关两者的差异,主要是为了帮助熟练的MATLAB®用户成为熟练的NumPy和SciPy用户。 一些关键的差异 MATLAB® NumP