使用lambda迭代列表以获取嵌套列表

时间:2015-09-24 11:43:42

标签: python

a = [[1,2],[3,4]]

pca( map(lambda v: v, a))

我需要将各个嵌套列表逐个传递给此函数。但我只得到了整个清单。不是嵌入式列表。我在这里缺少什么明显的技术?

更新(我能够根据评论解决这个问题):

此代码使用Spark的Python库及其自己的数据结构,我使用Python的库移植它。我错误地尝试使用它而不理解Python的 map 的语法,它可以将 pca 作为第一个参数,将嵌套列表作为第二个参数。它让我感到懊恼,因为我不熟悉Python。

流程从这条线开始,这是问题所在。我也修改了其余的代码。

componentsScaled, scaledScores, eigenvaluesScaled = pca( scaledData.map(lambda (k, v): v),3)



def estimateCovariance( data ):
mean = getmean( data )
dataZeroMean = data.map(lambda x : x - mean )
cov = dataZeroMean.map(lambda x : np.outer(x,x)).mean()
return cov

"""Computes the top `k` principal components, corresponding scores, and all eigenvalues.

"""
def pca(data, k=2):
eigVals, eigVecs = eigh(estimateCovariance(data))
inds = np.argsort(eigVals)[::-1]
topComponent = eigVecs[:,inds[:k]]
correlatedDataScores = data.map(lambda x : np.dot(x,topComponent))
return topComponent,correlatedDataScores,eigVals[inds]

1 个答案:

答案 0 :(得分:1)

如果你想做这样的事,

a = [[1,2], [3,4]]
what_you_want = [pca([1,2]), pca([3,4])]

您应该将pca传递给map而不是lambdamap alrady做了你想做的事情lambda - 它将传递给它的函数(pca)应用于列表a的每个元素。

what_you_want = map(pca, a)