0

我想处理uint一大串数字(test1),我这样做是“长度”的块。我需要它们signed int,然后我需要它作为此列表中每个偶数和奇数值的绝对长度。

但我想摆脱两个问题:

  1. 它使用了很多内存
  2. 这需要很长时间!

那么我怎样才能让它更快呢?有什么诀窍吗?我也可以使用numpy,这样做没有问题。

提前致谢!

test2 = -127 + test1[i:i+length*2048000*2 + 2048000*2*1]
test3 = (test2[::2]**2 + test2[1::2]**2)**0.5
4

1 回答 1

1

一种有效的方法是尝试使用 Numpy 函数,例如:

n = 10
ff = np.random.randint(0, 255, n)  # generate some data

ff2 = ff.reshape(n/2, 2)  # new view on ff (only makes copy if needed)
l_ff = np.linalg.norm(ff2, axis=1)  # calculate vector length of each row

请注意,当修改条目时,ff2thenff也会更改,反之亦然。

在内部,Numpy 将数据存储为连续的内存块。np.reshape()因此,除了利用该结构之外,还有其他方法。为了数据类型的高效转换,你可以尝试:

dd_s = np.arange(-5, 10, dtype=np.int8)
dd_u = dd_s.astype(np.uint8) # conversion from signed to unsigned
于 2016-01-17T15:54:32.743 回答