python - numpy中具有相同数组的数组的项目差异
问题描述
我有一个a
数字数组。
rnd = np.random.default_rng(12345)
a = rnd.uniform(0, -50, 5)
# array([-11.36680112, -15.83791699, -39.86827287, -33.81273354,
# -19.55547753])
我想找到数组与同一数组中每个元素的差异。示例输出将是:
[array([ 0. , 4.47111586, 28.50147174, 22.44593241, 8.18867641]),
array([-4.47111586, 0. , 24.03035588, 17.97481655, 3.71756054]),
array([-28.50147174, -24.03035588, 0. , -6.05553933,
-20.31279534]),
array([-22.44593241, -17.97481655, 6.05553933, 0. ,
-14.25725601]),
array([-8.18867641, -3.71756054, 20.31279534, 14.25725601, 0. ])]
我的第一种方法是使用列表理解[i - a for i in a]
。但是,由于我的原始数组a
非常庞大,并且我有数千个这样a
的 s 需要在其中执行相同的操作,因此整个过程变得非常缓慢并且内存消耗很大,以至于 jupyter 内核死亡。
有什么可能的方法可以加快速度吗?
解决方案
最简单的方法是使用广播:
import numpy as np
rnd = np.random.default_rng(12345)
a = rnd.uniform(0, -50, 5)
a[:, None] - a
输出:
array([[ 0. , 4.47111586, 28.50147174, 22.44593241,
8.18867641],
[ -4.47111586, 0. , 24.03035588, 17.97481655,
3.71756054],
[-28.50147174, -24.03035588, 0. , -6.05553933,
-20.31279534],
[-22.44593241, -17.97481655, 6.05553933, 0. ,
-14.25725601],
[ -8.18867641, -3.71756054, 20.31279534, 14.25725601,
0. ]])
推荐阅读
- angular - PrimeNG, SplitButton: How to get a parameter into the model?
- swift - TableViewCell的Swift底部边框消失
- docusaurus - Docusarus v2 - ¿How to add new tabs for Doc in NavBar?
- javascript - 从远程组件更改 useState
- pytorch - 使用 LSTM 处理音频信号
- html - Django 标记在 html 中显示错误
- c# - 如何为在数据网格中修改的行着色并在该行上定位?
- python - Python - 如何将 base64 数据从 MongoDB 发送到 Multipart-form API
- android - Android 蓝牙 startDiscovery 返回 false
- html - 在 Google 电子表格中使用 ImportXML 和 XPath 的元素