以压缩二进制格式在golang中存储矩阵

我正在探索Go和之间的比较Python,特别是对于数学计算。我注意到Go有一个矩阵包mat64

1)我想问一下同时使用这两种方法的人GoPython是否有与Numpy's等价的功能/工具可比较,savez_compressed它以某种npz格式(即“压缩”二进制,每个文件有多个矩阵)存储Go's 矩阵的数据?

2) 另外,Go 的矩阵可以像Numpy那样处理字符串类型吗?


精慕HU
浏览 289回答 2
2回答

拉丁的传说

1) .npz 是一种 numpy 特定格式。Go 本身不太可能在标准库中支持这种格式。我也不知道今天存在任何第三方库,并且(10 秒)搜索没有弹出。如果您特别需要 npz,请使用 python + numpy。如果你只是想从 Go 中得到类似的东西,你可以使用任何格式。二进制格式包括golang binary和gob。根据您要执行的操作,您甚至可以使用非二进制格式(如json)并自行压缩。2) Go 没有内置矩阵。你找到的那个库是第三方的,它只处理float64s.但是,如果您只需要以矩阵(n 维)格式存储字符串,则可以使用 n 维切片。对于2维它看起来像这样:var myStringMatrix [][]string。

Cats萌萌

npz文件是zip档案。归档和压缩(可选)由 Pythonzip模块处理。在npz包含一个npy文件的每个变量保存。任何基于操作系统的归档工具都可以解压缩和提取组件.npy文件。所以剩下的问题是 - 你能模拟npy格式吗?这不是微不足道的,但也不难。它由一个包含形状、步幅、dtype 和顺序信息的头块组成,后跟一个数据块,实际上是数组数据缓冲区的字节图像。因此缓冲区信息和数据与numpy数组内容密切相关。如果变量不是普通数组,则save使用 Python pickle 机制。首先,我建议使用该csv格式。它不是二进制的,也不快,但每个人和他的兄弟都可以生成并阅读它。我们不断收到有关使用np.loadtxt或读取此类文件的问题np.genfromtxt。查看代码np.savetxt以了解如何numpy生成此类文件。这很简单。另一个通用选择是使用tolist数组格式的JSON 。之所以想到这一点,GO是因为它是 Google 自己开发的用于 Web 应用程序的 Python 替代品。JSON 是一种基于简化 Javascript 语法的跨语言格式。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go