numpy - 计算数组中每个元素之间的距离
问题描述
我有一个数组,
a = np.array([1, 3, 5, 10])
我想创建一个函数来计算每个元素与其他元素之间的距离。不应该有 for 循环,因为速度很关键。
上述的预期结果将是:
array([[0, 2, 4, 9],
[2, 0, 2, 7],
[4, 2, 0, 5],
[9, 7, 5, 0]])
解决方案
您可以使用numpy.subtract.outer
:
np.abs(np.subtract.outer(a, a))
array([[0, 2, 4, 9],
[2, 0, 2, 7],
[4, 2, 0, 5],
[9, 7, 5, 0]])
或等效地使用以下任一方法:
np.abs(a - a[:, np.newaxis])
np.abs(a - a[:, None])
np.abs(a - a.reshape((-1, 1)))
推荐阅读
- android - 添加 Android 特定的外部库
- python - 所有从 Twitter 中提取数据的尝试都导致“模块”对象没有属性“OAuthHandler”
- tensorflow - Tensorflow:tf.rnn.raw_rnn - fn_loop 不可调用?
- amazon-web-services - 如何使用 ALB 和 OAuth 服务器安全地保护 AWS VPC 中的微服务?
- python - 如何根据用户登录执行不同的数据库查询
- codeigniter - 在 Code Igniter 中将输入密码从 varchar 更改为 md5
- ruby - Ruby 中的静态类型推断,我该怎么办?
- python - 从列表列表中返回已排序的索引列表
- audiokit - AudioKit 序列可以单独更改并作为单个音轨播放吗?
- vba - 使用 Excel VBA 将范围保存到字典