我现在正在学习Python/Numpy,但是我完全不明白None作为数组中的索引是什么意思,我想计算两个二维数据集x和y之间的欧氏距离,输出应该是包含两个数据集之间欧氏距离的二维数组
x[0] and y[0], x[0] and y[1], x[0] and y[2],...,
x[1] and y[0], x[1] and y[1], x[1] and y[2], and so on.
解决办法是:np.sqrt(np.sum((x[:, None] - y[None])**2, -1)
但是我不明白x[:, None]
和y[None]
之间的区别?它们是如何被重塑的?我只是无法在脑海中想象它。有人能帮忙吗?
2条答案
按热度按时间798qvoo81#
让我们举个简单的例子:
使用
x[:, None]
添加额外的维度:使用
y[None]
会预先生成一个额外的维度:现在,当您对这两个数组执行操作时,将广播这两个数组:
这相当于:
mzsu5hc02#
也许您应该尝试
.shape
并将其打印为:输出应为:
所以一般来说,
None
在相应的索引上增加了一个维度,而且print(x[None].shape)
得到的结果和print(x[None,:].shape)
一样。