假设我的程序中有以下代码块,用于从一个大文本文件中读取数据:
sets = []
for line in open(file, "r"):
sets.append(line.split()) # sets is a list of lists
我不想更改列表中的值。因为元组在内存和处理器上更容易,我应该改为执行以下操作吗?
sets = []
for line in open(file, "r"):
sets.append(tuple(line.split())) # sets is a list of tuples
或者仅仅使用列表,因为数据是
我试图在非常大的一组距离上执行快速集群,但遇到了一个问题。
我有一个非常大的csv文件(大约9100万行,所以for循环在R中花费了太长的时间)关键字之间的相似性(大约50,000个唯一关键字),当我读入data.frame时,它看起来像这样:
> df
kwd1 kwd2 similarity
a b 1
b a 1
c a 2
a c 2
这是一个稀疏列表,我可以使用sparseMatrix()将其转换为稀疏矩阵:
> myMatrix
a b c
a . . .
b 1 . .
c 2 . .
但是,当我尝试使用as.dist
我试着用Hmmlearn来适应和训练一个HMM,但是我收到了一个奇怪的警告,我并不完全理解:
拟合117917879个自由标量参数且仅含550034个数据点的模型将得到一个退化解。
我使用了相当大的数据集,但我不明白117917879自由标量参数从何而来,以及有一个退化的解决方案意味着什么。
我将我的hmm定义如下:
from hmmlearn import hmm
# vocab_size = 10858, is the number of states
model = hmm.GaussianHMM(n_components=vocab_size, covariance_type=
我想知道如何处理特定类型的算法或使用什么数据结构。这个算法本质上是,如果给定一个无限大的二维数组(在本例中,假设是一个100,000 x 100,000的数组),那么遍历每一列和更改值的最有效方法是什么,并且能够查看一行是否具有所有相同的元素(遍历所有行)
编辑:我指的是大的固定尺寸,而不是无限大。基本上,数组中的所有时间元素都是1和0。另外,当我使用一个简单的二维数组运行我的算法时,我得到了一个超过时间限制的错误,我确信这是由于遍历每一行而引起的。所以我只需要一种更快的方法来改变列中的值。但更重要的是,查看哪些行有匹配的元素。
在使用差异引擎来识别非常大的数据结构中的差异时,我注意到在相同但重新声明的namedtuples之间的namedtuples比较行为不正常。重新声明namedtuples是不可避免的*。下面是一个很小的例子:
def test_named_tuples_same_type():
from collections import namedtuple
X = namedtuple("X", "x")
a = X(1)
# We are unable to avoid redeclaring X
X = namedtuple