' numpy.ndarray'检索矩阵对角线时,对象不可调用。

时间:2016-05-09 10:58:56

标签: python matrix

我有一个291 * 291矩阵,我想自动检索值(0,1),(1,2),(2,3)....(n-1,n)。使用循环或函数是否有直接的方法?

矩阵是数据库中文本之间的余弦相似性:

bodies = [d['body'] for d in data]
tfidf = vectorizer.fit_transform(bodies)

matrix =(tfidf * tfidf.T).A

因为我想创建一个向量,所以我试图这样做:

vector = []
for i in range(len(data) -1):
    vector.append(matrix(i, i+1))

但是我收到以下错误:

TypeError: 'numpy.ndarray' object is not callable

有关如何修复它的任何想法?

2 个答案:

答案 0 :(得分:4)

由于矩阵是方形的,您可以使用偏移量为1的numpy.diagonal来获取所需的值

mat.diagonal(offset = 1)

正偏移1获得矩阵主对角线上方的对角线1。

迷你演示

mat = numpy.ones((3,3))
mat[0,1] = 2
mat[1,2] = 3
print(mat.diagonal(offset = 1))

输出:

[ 2.  3.]

答案 1 :(得分:1)

Matrix下标使用方括号,而不是圆括号。你想要matrix[i, i+1]