Python numpy快速数组计算到2D数组(矩阵)

时间:2018-07-03 16:46:40

标签: python arrays list numpy truthtable

我有一个用例,其中有一组数千个坐标,我想将它们向量化并将它们转换为距离。我要以这样的方式进行操作:最终得到一个2D数组,实际上是一个矩阵,即n x n,这给了我输入点之间的范数。我知道对角线上会有一堆零,那很好。我想尽快处理它。

目前,我的方法是将一个坐标x,y,z的numpy数组作为一行,但是该列表包含从文件中加载的许多元素,例如5000行。

我目前正以下列方式遍历坐标列表:

for i in range(n):
    for j in range(n):
        dist[i,j] = round(numpy.linalg.norm(coords[i] - coords[j]), 3)

dist是一个numpy.zeros((n,n))的numpy数组设置,其中我已经有了n值,即坐标列表的长度。

我知道在此数据集上必须有一种更快的方法来使用numpy,从而使坐标当然成为数组,但我不确定如何高效地执行此操作。我想要这样做的部分原因是我打算对此使用真值表掩码进行数据处理。谢谢!

2 个答案:

答案 0 :(得分:0)

因此解决方案如上所述简单,只需导入scipy并使用:

val intent_1 = Intent().apply {
    intent.action = Intent.ACTION_SEND
    intent.type = "text/plain"
    intent.putExtra(Intent.EXTRA_TEXT, "Text to share")
}

结果数组是欧几里得范数的n×n数组。

答案 1 :(得分:0)

从scipy获得相同答案的另一种类似方法:

from scipy.spatial.distance import pdist, squareform

distances = squareform(pdist(coords))