我有一个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
有关如何修复它的任何想法?
答案 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]
。