range http://docs.python.org/2/library/functions.html#range当您尝试使用它时,它会返回一个 int 值列表,就像它返回一个元组一样。尝试itertools.combinations http://docs.python.org/2/library/itertools.html#itertools.combinations反而:
import scipy
from scipy import stats
from itertools import combinations
data = [[1, 2, 4], [9, 5, 1], [8, 3, 3]]
def pearson(x, y):
series1 = data[x]
series2 = data[y]
if x != y:
return scipy.stats.pearsonr(series1, series2)
h = [pearson(x,y) for x,y in combinations(len(data), 2)]
或者正如@Marius 建议的:
h = [stats.pearsonr(data[x], data[y]) for x,y in combinations(len(data), 2)]