【发布时间】:2021-08-28 05:15:22
【问题描述】:
我有一个代表视频的数组。目前它的设置方式是第一个元素是第一个像素在所有不同时间步长的所有值的数组,然后第二个元素是第二个像素的值,依此类推。我想要它,所以第一个元素将是第一个时间步的所有像素的数组。
所以对于 2x2 视频的两帧,我想要
[
[
[a1, a2, a3], [b1, b2, b3]
],
[
[c1, c2, c3], [d1, d2, d3]
]
]
成为
[
[
[a1, b1],
[c1, d1]
],
[
[a2, b2],
[c2, d2]
],
[
[a3, b3],
[c3, d3]
],
]
我目前的实现是这样的:
def remap_image(seq):
# seq = np.array(seq)
s = seq.shape
a = np.zeros((s[2], s[0], s[1]))
for x, px in enumerate(tqdm(seq)):
for y, py in enumerate(px):
for p_counter, value in enumerate(py):
a[p_counter][x][y] = value/100.
return a
这按预期工作,但是这种方法非常慢。有没有更快的方法来做到这一点?
【问题讨论】:
-
看起来你有一个 (2,2,3) 形状,并且你想转置为 (3,2,2)
-
seq.transpose(2, 0, 1) -
@MateenUlhaq 完美运行,谢谢!
标签: python arrays numpy numpy-ndarray