gpt4 book ai didi

python - 使用 Numpy 在空数组中插入行

转载 作者:行者123 更新时间:2023-12-04 03:57:31 24 4
gpt4 key购买 nike

你好,我目前正在尝试转换这个数组

test=np.array([[0,0],[0,1],[1,1],[3,0]])
并使用曼哈顿距离将此数组转换为此形状
[0., 1., 2., 3.] 
[1., 0., 1., 4.]
[2., 1., 0., 3.,
[3., 4., 3., 0.]
代码是这样的
list_x=[]
newarray=np.array([])
length=len(test)
for i in range(length):
for j in range(length):
print('i=',i)
print('j=',j)
var=sum(abs(a-b) for a,b in zip(test[i],test[j]))
list_x.append(var)
newarray= np.append(newarray,list_x,axis = 0)
list_x=[]

但代码的结果不断给我这个:
array([0., 1., 2., 3., 1., 0., 1., 4., 2., 1., 0., 3., 3., 4., 3., 0.])
我的 np.append() 中是否存在阻止将其转换为 4*4 shap 数组的问题?

最佳答案

您可以使用 scikit-learn 的 manhattan_distances 获得所有成对的曼哈顿距离,将上述简化为单个函数调用:

from sklearn.metrics.pairwise import manhattan_distances

manhattan_distances(test)
array([[0., 1., 2., 3.],
[1., 0., 1., 4.],
[2., 1., 0., 3.],
[3., 4., 3., 0.]])

如果您想使用 for 循环获取距离,我建议您改用 python 列表。为了最终得到一个嵌套列表,生成一个内部列表,其中包含一行与其他行的距离,并在每次迭代时将其附加到外部列表:
out=[]
for i in range(length):
new_row = []
for j in range(length):
var=sum(abs(a-b) for a,b in zip(test[i],test[j]))
new_row.append(var)
out.append(new_row)

print(out)
# [[0, 1, 2, 3], [1, 0, 1, 4], [2, 1, 0, 3], [3, 4, 3, 0]]

关于python - 使用 Numpy 在空数组中插入行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63594691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com