为什么这段代码在 for 循环中只使用 x 而不是同时使用 x 和 y?
Why does this code use only x instead of both x and y in for loop?
为什么他们只在 for 循环中使用 X 而不是同时使用 X 和 Y?为什么我们使用 reshape with 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)))
我没怎么用过 numpy,但这是我对你的问题的最佳猜测。
代码只遍历 X
而不是 X
和 Y
的原因是代码没有将 X
的每个值与每个值配对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
就您关于 reshape
的问题而言,documentation 指出任何参数中的值为 -1 表示应从原始数组的长度推断出该维度的长度.那么我的猜测是 x.reshape(1, -1)
会将 x
重组为一个二维数组,其中第一个维度的长度为 1,第二个维度的长度只要它需要保存所有值x
.
X = [1, 2, 3, 4, 5]
X2 = X.reshape(1, -1)
# The value of X2 will be:
# [[1, 2, 3, 4, 5]]
未经仔细测试,我认为 xy zip 也能正常工作:
for x,y in zip(X,Y):
euclidean_distances_vector_l.append(euclidean_distances(x.reshape(1, -1), y.reshape(1, -1)))
为什么他们只在 for 循环中使用 X 而不是同时使用 X 和 Y?为什么我们使用 reshape with 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)))
我没怎么用过 numpy,但这是我对你的问题的最佳猜测。
代码只遍历 X
而不是 X
和 Y
的原因是代码没有将 X
的每个值与每个值配对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
就您关于 reshape
的问题而言,documentation 指出任何参数中的值为 -1 表示应从原始数组的长度推断出该维度的长度.那么我的猜测是 x.reshape(1, -1)
会将 x
重组为一个二维数组,其中第一个维度的长度为 1,第二个维度的长度只要它需要保存所有值x
.
X = [1, 2, 3, 4, 5]
X2 = X.reshape(1, -1)
# The value of X2 will be:
# [[1, 2, 3, 4, 5]]
未经仔细测试,我认为 xy zip 也能正常工作:
for x,y in zip(X,Y):
euclidean_distances_vector_l.append(euclidean_distances(x.reshape(1, -1), y.reshape(1, -1)))