python - NumPy 中有 unstack 吗?
问题描述
NumPy中有np.stack,但是否有与tf.unstack相同的对立面?np.unstack
解决方案
遇到这么晚,这里有一个更简单的答案:
def unstack(a, axis=0):
return np.moveaxis(a, axis, 0)
# return list(np.moveaxis(a, axis, 0))
作为奖励,结果仍然是一个 numpy 数组。如果您只是 python-unwrap 它会发生解包:
A, B, = unstack([[1, 2], [3, 4]], axis=1)
assert list(A) == [1, 3]
assert list(B) == [2, 4]
不出所料,它也是最快的:
❯ python -m timeit -s "import numpy as np; a=np.array(np.meshgrid(np.arange(1000), np.arange(1000)));" "C = [np.squeeze(e, 1) for e in np.split(a, a.shape[1], axis = 1)]"
100 loops, best of 5: 2.64 msec per loop
❯ python -m timeit -s "import numpy as np; a=np.array(np.meshgrid(np.arange(1000), np.arange(1000)));" "C = [np.take(a, i, axis = 1) for i in range(a.shape[1])]"
50 loops, best of 5: 5.08 msec per loop
❯ python -m timeit -s "import numpy as np; a=np.array(np.meshgrid(np.arange(1000), np.arange(1000)));" "C = np.moveaxis(a, 1, 0)"
100000 loops, best of 5: 3.89 usec per loop
# With list conversion
❯ python -m timeit -s "import numpy as np; a=np.array(np.meshgrid(np.arange(1000), np.arange(1000)));" "C = list(np.moveaxis(a, 1, 0))"
1000 loops, best of 5: 205 usec per loop
推荐阅读
- python - 如何在 Windows 启动期间自动运行烧瓶应用程序?
- aurelia - 错误:没有为元素定义 Aurelia API:“DIV”
- javascript - 如何使用 tensorflow JS 在 Javascript 中运行 UNet 分割模型?
- javascript - 如何将变量从 history.replace 传递给组件
- self-extracting - 我可以在 iexpress 自解压器中更新可执行文件的名称吗?
- authentication - .Net Core 身份在 .Net Core 5.0 中添加公司名称作为用户登录过程的一部分
- reactjs - 如何从 React Hooks Form 7.0 中的文本字段中排除特殊字符
- performance - 在 OWASP Benchmark 中生成安全工具之间比较的正确结果的问题
- installation - Openstack 的 Freezer 安装过程中的 Keystone 异常
- javascript - 突出显示重复的名称