对整个数组调用函数,而不是对数组的每个元素调用函数



假设我有一个元组列表,格式为:

data = [(1,2), (1,2), ..., (1,2)]

和一个接受元组的方法data_to_bytes对它做一些事情并返回字节。现在我想对data中的每个元素调用这个方法,并将输出保存到文件中。这是我已经有的:

def create_data_file(data_file, data):
with data_file.open('wb') as _file:
for i in data:
_file.write(data_to_bytes(i))
return data_file

但是这太慢了,我想改进它。也许可以去掉里面的循环。我正在考虑以某种方式使用numpy,也许在整个数组上调用data_to_bytes()而不是每个元素。这可能吗?

只有当你可以替换你的" data_to_bytes " "通过numpy函数在整个数组上运行。Numpy不向量化任意函数

如果你认为这是不可能的,其他提高性能的方法可能是:

  • 缓存"data_to_bytes"或
  • 提高"data_to_bytes"的性能本身

看看numpy.apply_along_axis。它接受输入数组,并沿着轴应用给定函数,返回一个包含计算数据的新数组。

试试下面的代码:

data = [(1, 2), (1, 2), (1, 2)]
def create_data_file(data_file, data):
with open(data_file, 'wb') as _file:
for i in data:
_file.write(bytearray(i))
print(type(bytearray(i)))
return data_file
create_data_file('test.txt', data)

相关内容

  • 没有找到相关文章

最新更新