Python numpy中的对称矩阵?
嗨 我希望在python中创建一个对称矩阵,并用零填充它 目前,我已经创建了一个已知维度的数组,但这不适合作为距离矩阵输入到R中 numpy中是否有创建对称矩阵的“简单”方法 谢谢, D 编辑 我应该澄清一下——创建“对称”矩阵很好。然而,我只对生成下三角形式感兴趣,即Python numpy中的对称矩阵?,python,matrix,numpy,symmetric,Python,Matrix,Numpy,Symmetric,嗨 我希望在python中创建一个对称矩阵,并用零填充它 目前,我已经创建了一个已知维度的数组,但这不适合作为距离矩阵输入到R中 numpy中是否有创建对称矩阵的“简单”方法 谢谢, D 编辑 我应该澄清一下——创建“对称”矩阵很好。然而,我只对生成下三角形式感兴趣,即 ar = numpy.zeros((3, 3)) array([[ 0., 0., 0.], [ 0., 0., 0.], [ 0., 0., 0.]]) 我想: array([[ 0
ar = numpy.zeros((3, 3))
array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])
我想:
array([[ 0],
[ 0, 0 ],
[ 0., 0., 0.]])
这可能吗?我认为尝试使用这种三角形阵列是不可行的 例如,这里是(平方)成对欧几里德距离的简单实现:
def pdista(X):
"""Squared pairwise distances between all columns of X."""
B= np.dot(X.T, X)
q= np.diag(B)[:, None]
return q+ q.T- 2* B
就性能而言,很难击败它(在Python级别)。不使用这种方法的主要优点是什么?您能详细说明一下您所说的
不适合作为距离矩阵输入R的意思吗。您没有标记R
,因此它是否相关?谢谢-不,那不是真的相关。项目之间的距离(欧几里德、曼哈顿、余弦等)以成对方式计算,因此输出对称。我正在计算自定义矩阵,因为R不能很好地处理我的数据。但这是另一个故事。抱歉造成混乱@达伦:还是不确定你在找什么。你是不是建议你只计算上三对角部分,而下三对角部分神奇地反映了这一点?即使是可行的,我也会期望性能受到处罚。你想展示一下你的代码吗?我认为EOL对类似Q的回答是正确的()如果你想快速计算距离矩阵,请查看scipy.spatial.pdist