为什么我无法计算两个 numpy 数组之间的距离?
Why I can not calculate distance between two numpy array?
1.I 有两个 numpy 数组,分别是 data_test 和 data_train
data_partial_test = data_test[:2000,:]
test_lable = label_test
print(test_lable.shape)
print(data_partial_test[0].shape)
print(data_train[0].shape)
dis = (( data_partial_test- data_train[:21000,])**2).sum(axis=1)
2.The data_test 的形状是 (21000,784) 而 data_train 的形状是 (2000,784)。当我 运行 这段代码时,它说:操作数不能与形状一起广播 (2000,784) (21000,784)
当你执行数组减法时,比如arr_1 - arr_2,
然后实际上 Numpy 次尝试:
- 从arr_2行0行的元素中减去对应的元素
arr_1 的(也在 0 行),
- 行 1,
相同
- 以此类推,直到两个数组的末尾。
只要两个数组的行数相同,该方案就有效
和列。
此规则有 3 个例外情况:
- 其中一个数组可以有一个单行。那么这一行是
broadcast(重复)所以这个数组在概念上有很多
根据需要行。
- 涉及的数组之一可以有一个单列。然后
上面提到的广播沿着 列 .
进行
- 其中一个操作数是单值。然后它被“扩展”成一个数组
与其他操作数(数组)中的行数/列数相同。
在 Numpy 中阅读有关广播的内容,以更详细地了解这一点。
在您的情况下,上述情况均未发生。
两个数组的列数相同,但行数是
不同。
后果就是上面的广播不能进行,整个
操作失败。
可能的解决方案
也许第一个数组中的每一行(行数较少)可以是
与第二个数组中的一行“配对”,例如基于一些关键领域。
这样的操作可以在Pandas中进行。请参阅 Pandas.
中的 join 方法
那么您可以:
- 将您的两个 Numpy 数组转换为 pandasonic DataFrames,
- 对这些 DataFrames 执行 join(基于公共键,通常
设置为每个 DataFrame 中的索引),
- 计算适当的列对之间的差异。
那么您可以:
- 平方这些差异,
- 总结一下,
- 最后计算和的根,得到想要的距离。
1.I 有两个 numpy 数组,分别是 data_test 和 data_train
data_partial_test = data_test[:2000,:]
test_lable = label_test
print(test_lable.shape)
print(data_partial_test[0].shape)
print(data_train[0].shape)
dis = (( data_partial_test- data_train[:21000,])**2).sum(axis=1)
2.The data_test 的形状是 (21000,784) 而 data_train 的形状是 (2000,784)。当我 运行 这段代码时,它说:操作数不能与形状一起广播 (2000,784) (21000,784)
当你执行数组减法时,比如arr_1 - arr_2, 然后实际上 Numpy 次尝试:
- 从arr_2行0行的元素中减去对应的元素 arr_1 的(也在 0 行),
- 行 1, 相同
- 以此类推,直到两个数组的末尾。
只要两个数组的行数相同,该方案就有效 和列。
此规则有 3 个例外情况:
- 其中一个数组可以有一个单行。那么这一行是 broadcast(重复)所以这个数组在概念上有很多 根据需要行。
- 涉及的数组之一可以有一个单列。然后 上面提到的广播沿着 列 . 进行
- 其中一个操作数是单值。然后它被“扩展”成一个数组 与其他操作数(数组)中的行数/列数相同。
在 Numpy 中阅读有关广播的内容,以更详细地了解这一点。
在您的情况下,上述情况均未发生。 两个数组的列数相同,但行数是 不同。 后果就是上面的广播不能进行,整个 操作失败。
可能的解决方案
也许第一个数组中的每一行(行数较少)可以是 与第二个数组中的一行“配对”,例如基于一些关键领域。 这样的操作可以在Pandas中进行。请参阅 Pandas.
中的 join 方法那么您可以:
- 将您的两个 Numpy 数组转换为 pandasonic DataFrames,
- 对这些 DataFrames 执行 join(基于公共键,通常 设置为每个 DataFrame 中的索引),
- 计算适当的列对之间的差异。
那么您可以:
- 平方这些差异,
- 总结一下,
- 最后计算和的根,得到想要的距离。