Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.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中创建值矩阵_Python_Numpy_Matrix_Data Manipulation - Fatal编程技术网

在python中创建值矩阵

在python中创建值矩阵,python,numpy,matrix,data-manipulation,Python,Numpy,Matrix,Data Manipulation,我有一个数据集如下 d = {'dist': [100, 200, 200, 400],'id': [1, 2, 3, 4]} df = pd.DataFrame(data= d) 我想围绕id创建一个值矩阵 带结石:dist(id1)-dist(id2) 如果您有任何建议,我们将不胜感激。我对numpy不太熟悉,但您可以根据现有的数据结构,使用这种稍微复杂的词典理解创建矩阵: matrix = {id: {v: d.get("dist")[i] - d.get("dist")[j] for

我有一个数据集如下

d = {'dist': [100, 200, 200, 400],'id': [1, 2, 3, 4]}

df = pd.DataFrame(data= d)
我想围绕id创建一个值矩阵

带结石:dist(id1)-dist(id2)


如果您有任何建议,我们将不胜感激。

我对numpy不太熟悉,但您可以根据现有的数据结构,使用这种稍微复杂的词典理解创建矩阵:

matrix = {id: {v: d.get("dist")[i] - d.get("dist")[j] for j, v in enumerate(d.get("id"))} for i, id in enumerate(d.get("id"))}

矩阵的键是列,每列的键是行。您可能可以以更简洁的方式编写此文件,但这是符合您要求的唯一内置答案。

我不熟悉numpy,但您可以根据现有的数据结构,使用此稍微复杂的字典理解创建矩阵:

matrix = {id: {v: d.get("dist")[i] - d.get("dist")[j] for j, v in enumerate(d.get("id"))} for i, id in enumerate(d.get("id"))}
矩阵的键是列,每列的键是行。你也许可以用更简洁的方式写这篇文章,但这是一个内置的唯一符合你要求的答案。

(编辑)以下是通过numpy之美得到的简化版本:

import numpy as np

d = {'dist': [100, 200, 200, 400],'id': [1, 2, 3, 4]}

a = np.array(d['dist']).reshape(1,-1)
b = np.array(a).reshape(-1,1)

# the solution
print a-b

# [[   0  100  100  300]
#  [-100    0    0  200]
#  [-100    0    0  200]
#  [-300 -200 -200    0]]
(旧答案)你可以用一点矩阵代数:

import numpy as np

d = {'dist': [100, 200, 200, 400],'id': [1, 2, 3, 4]}

a = np.array(d['dist']).reshape(1,-1)
b = np.array(a).reshape(-1,1)

# some matrix algebra
c = b.dot(a)
e = c/a
f = c/b

# the solution
print f-e

# [[   0  100  100  300]
#  [-100    0    0  200]
#  [-100    0    0  200]
#  [-300 -200 -200    0]]
(编辑)以下是通过numpy之美的简化版本:

import numpy as np

d = {'dist': [100, 200, 200, 400],'id': [1, 2, 3, 4]}

a = np.array(d['dist']).reshape(1,-1)
b = np.array(a).reshape(-1,1)

# the solution
print a-b

# [[   0  100  100  300]
#  [-100    0    0  200]
#  [-100    0    0  200]
#  [-300 -200 -200    0]]
(旧答案)你可以用一点矩阵代数:

import numpy as np

d = {'dist': [100, 200, 200, 400],'id': [1, 2, 3, 4]}

a = np.array(d['dist']).reshape(1,-1)
b = np.array(a).reshape(-1,1)

# some matrix algebra
c = b.dot(a)
e = c/a
f = c/b

# the solution
print f-e

# [[   0  100  100  300]
#  [-100    0    0  200]
#  [-100    0    0  200]
#  [-300 -200 -200    0]]

请提供您的尝试代码。请提供您的尝试代码。我明白了,这相当于直接打印a-B更新。给numpy一分。我的原始答案是你们在纸上需要的,我想,我明白了,这相当于直接打印a-B更新版。给numpy一分。我想我最初的答案是你在纸上需要的。