Kev*_*vin 6 python arrays numpy
我想按行号移动每一行,并与我想要的输出形状相关。一个例子:
array([[0, 1, 2], array([[0, 1, 2], array([[0, 1, 2, 0, 0],
[1, 2, 3], -> [1, 2, 3], -> [0, 1, 2, 3, 0],
[2, 3, 4]]) [2, 3, 4]]) [0, 0, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)
最左边的数组是我的输入,最右边的数组是我想要的输出。这可以推广到更大的数组,例如10x10数组。
有没有很好的方法来做到这一点?
我所拥有的是:
A = np.array([[1, 2, 3],
[2, 3, 4],
[3, 4, 5]], dtype=np.float32)
out = np.zeros((A.shape[0], A.shape[1]*2-1))
out[[np.r_[:3]], [np.r_[:3] + np.r_[:3][:,None]]] = A
Run Code Online (Sandbox Code Playgroud)
这里有一个快速的方法:
\ndef f(a):\n r, _ = a.shape\n return np.c_[a, np.zeros((r, r), dtype=a.dtype)].ravel()[:-r].reshape(r, -1)\nRun Code Online (Sandbox Code Playgroud)\n例子:
\na = np.arange(8).reshape(4, -1)\n>>> f(a)\narray([[0, 1, 0, 0, 0],\n [0, 2, 3, 0, 0],\n [0, 0, 4, 5, 0],\n [0, 0, 0, 6, 7]])\nRun Code Online (Sandbox Code Playgroud)\n定时
\na = np.random.randint(100, size=(1000, 1000))\n%timeit f(a)\n# 2.08 ms \xc2\xb1 14.5 \xc2\xb5s per loop (mean \xc2\xb1 std. dev. of 7 runs, 100 loops each)\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |