Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用1'将一维数组(K,1)转换为二维一致/一致数组(K,K);s或0';如果值匹配,则为s_Python_Multidimensional Array - Fatal编程技术网

Python 使用1'将一维数组(K,1)转换为二维一致/一致数组(K,K);s或0';如果值匹配,则为s

Python 使用1'将一维数组(K,1)转换为二维一致/一致数组(K,K);s或0';如果值匹配,则为s,python,multidimensional-array,Python,Multidimensional Array,第一个数组(K,1)是一维的,每个索引项都有值 (A,B,C,D,E,F,G,H)=[1,2,2,3,1,3,1,2],其中A=1,B=2,C=2,D=3,E=1,F=3,G=1,H=2 我们希望创建一个(K,K)数组,其中包含共识或一致性值,这将是一个 (A,B,C,D,E,F,G,H)x(A,B,C,D,E,F,G,H)矩阵 因此,如果任何两个索引项在原始一维数组中具有相同的值,则新值将为1,但如果两个索引项具有不同的值,则新值将为零 例如,由于原始一维数组中的B=2和H=2,则二维一致性矩

第一个数组(K,1)是一维的,每个索引项都有值

(A,B,C,D,E,F,G,H)=[1,2,2,3,1,3,1,2],其中A=1,B=2,C=2,D=3,E=1,F=3,G=1,H=2

我们希望创建一个(K,K)数组,其中包含共识或一致性值,这将是一个

(A,B,C,D,E,F,G,H)x(A,B,C,D,E,F,G,H)矩阵

因此,如果任何两个索引项在原始一维数组中具有相同的值,则新值将为1,但如果两个索引项具有不同的值,则新值将为零

例如,由于原始一维数组中的B=2和H=2,则二维一致性矩阵数组中的B,H=1,但由于原始数组中的A=1和B=2,则一致性矩阵中的A,B=0

A到起始数组和所需结果

另外,寻找一种计算效率高的方法,因为我们的K通常是300到500项,可能的值范围是1到7

我们必须通过300个单独的迭代或300个不同的开始一维数组(K,1)来完成相同的过程,一次完成一个,以创建300个不同的共识/一致性矩阵

我没有尝试过任何东西,因为我不知道如何接近

预期结果将是一个
K x K
矩阵,其中每个单元格的值要么为1(如果列和行项目iD最初具有相同的值),要么为零(如果它们最初在开始的一维数组(K,1)中没有相同的值)

i、 e,(B=2,H=2)因此(B,H=1) 但是(A=1,B=2)因此(A,B=0)


另请参阅示例输入所需结果的图像。

如果我们的阵列是numpy阵列,那么我们可以利用广播

import numpy as np

arr = np.array([1,2,2,3,1,3,1,2])

np.equal(np.reshape(arr, (-1, 1)), arr)

结果是一个
dtype('bool')
数组,但如果您愿意,可以将其转换回
int

欢迎使用堆栈溢出。你熟悉吗?你愿意结果是一个numpy数组而不是一个基本的Python列表吗?非常感谢。我们会试试你的好建议。凯尔的解决方案很有魅力。我们在K=300个样本上进行Wards聚类,每个样本具有118个基因表达特征,然后重新采样50次(即每次聚类随机剔除20%的样本),并在所有50个单独聚类输出的下游实施他的解决方案,以给我们50个唯一的一致性矩阵。整个过程从开始到结束只需1.5分钟!美丽的