【发布时间】:2016-01-03 12:15:06
【问题描述】:
我有六个 numpy 数组,我需要将它们转换成一个数组,甚至更好,一个列表(如果有比 tolist() 更快的方法,你想推荐我)。无论如何,我需要它来处理来自 .gif 的图像数据,所以它必须非常快。我最近的尝试以 8 帧/秒的处理时间结束。我将数组转换为列表,但我很确定如果可以使用数组方法完成它会更快。
数组具有相同的长度,它们是一维的,长度从 4096 开始,并且填充了布尔值。
它应该遵循的原则:
a = array((1,3,5))
b = array((2,4,6))
>>> array([1, 2, 3, 4, 5, 6])
这是我最近的尝试:
for x in range(size):
counter += 1
print(b0[x]
data_bin.insert(0, 0)
data_bin.insert(1, 0)
data_bin.insert(2, b0[x])
data_bin.insert(3, b1[x])
data_bin.insert(4, r0[x])
data_bin.insert(5, g0[x])
data_bin.insert(6, r1[x])
data_bin.insert(7, g1[x])
然后我将 data_bin 写入内存空间并清除该值。我可以在 10 毫秒内写 1 帧,所以整个例程应该花费我大约 8 毫秒。
为了抑制混淆,我以数组格式从图像中获取数据,并且必须以正确的顺序获取它们。之后我必须将其转换为字符串,因为这是我将其写入内存的最快方式。
谢谢:)
【问题讨论】:
-
那么,基本上你想要
zip和chain数组?有点像[x for y in zip([1,3,5],[2,4,6]) for x in y],只是更快并使用 numpy? -
我仍然不确定您的第一个示例与第二个示例有何关联。你确定预定的顺序是正确的吗?
r0, r1, g0, g1, b0, b1与a和b有什么关系? -
@tobias_k 哦,对不起,第一个例子只是它应该做的演示,第二个来自我的代码,我没有改变任何东西。所以顺序应该像
code[0, 0, b0[x], b1[x], r0[x], g0[x], r1[x], g1[x]](前两位是偏移量)。然后重复直到 x = 4096 -
那么,您是否尝试过类似(在普通 Python 中)
[(0, 0) + zipped for zipped in zip(b0, b1, r0, g0, r1, g1)]?
标签: list python-2.7 sorting numpy beagleboneblack