为什么他们只在循环中使用X,而不同时在X和Y中使用X?为什么我们要使用1,-1进行整形?
# implement a loop which computes Euclidean distances between each element in X and Y
# store results in euclidean_distances_vector_l list
X = np.random.uniform( low=lower_boundary, high=upper_boundary, size=(sample_size, n) )
Y = np.random.uniform( low=lower_boundary, high=upper_boundary, size=(sample_size, n) )
for index, x in enumerate(X):
euclidean_distances_vector_l.append(euclidean_distances(x.reshape(1, -1), Y[index].reshape(1, -1)))
答案 0 :(得分:0)
我没用过很多numpy,但这是您对问题的最佳猜测。
代码仅迭代X
而不是X
和Y
的原因是因为代码没有将X
的每个值与{的每个值配对{1}}。相反,它希望Y
中的每个值以及X
中的对应值。考虑以下示例:
Y
就您对X = [0, 1, 2, 3, 4]
Y = [5, 6, 7, 8, 9]
for index, x in enumerate(X):
print(x, Y[index])
# Prints:
# 0 5
# 1 6
# 2 7
# 3 8
# 4 9
的疑问而言,documentation指出,任何参数中的值-1都表示应从原始数组的长度推断出该维的长度。然后,我的猜测是reshape
会将x.reshape(1, -1)
重组为一个二维数组,其中第一个维度的长度为1,第二个维度的长度为保持其中所有值所需的长度x
。
x
答案 1 :(得分:0)
在没有经过仔细测试的情况下,我认为xy zip也可以正常工作:
for x,y in zip(X,Y):
euclidean_distances_vector_l.append(euclidean_distances(x.reshape(1, -1), y.reshape(1, -1)))