python - NumPy 中有 unstack 吗?

标签 python numpy

np.stackNumPy ,但是否有相反的np.unstacktf.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 - NumPy 中有 unstack 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64097426/

相关文章:

python - 如何在不耗尽内存的情况下迭代 Django 中的大表?

python - 使用 Python 将方程渲染为 .png 文件

python - 删除 3D numpy 数组中包含负值的 "rows"

python - 足球数据的多元多项式拟合

python - 在 datetime、Timestamp 和 datetime64 之间转换

python - 将包含 if 的函数应用于 pandas 中数据帧的每一行,无需 for 循环

python - Python 中的 K 均值实现

python - Pandas 按重叠箱分组

python - 使用 Python 的 numpy 实现随机梯度下降

python - 复数的表示法不一致