尝试将numpy矩阵M
写入二进制文件时,如下所示:
from io import open
X = [random.randint(0, 2 ** self.stages - 1)for _ in range(num)]
Matrix = np.asarray([list(map(int, list(x))) for x in X])
file_output = open('result.bin', 'wb')
M = np.ndarray(Matrix, dtype=np.float64)
file_output.write(M)
file_output.close()
我得到了这个错误:
Traceback (most recent call last):
File "experiments.py", line 164, in <module>
write_data(X, y)
File "experiments.py", line 39, in write_data
arr = np.ndarray(Matrix, dtype=np.float64)
ValueError: sequence too large; cannot be greater than 32
我能知道怎么解决这个问题吗?非常感谢。
替换:
M = np.ndarray(Matrix, dtype=np.float64)
与
M = Matrix.astype(np.float64)
np。数组(Matrix,dtype=np.float64)
也可以工作,但是astype
更简单。
我在重新创建Matrix
变量时遇到了一些问题。它的形状是什么?
np。保存
是将多维数组保存到文件中的最佳方法。还有其他方法,但它们不保存形状和数据类型信息。
ndarray
是错误的,因为第一个(位置)参数应该是形状,而不是另一个数组。缓冲区
参数中提供了数据(如果有)ndarray
通常不被初学者甚至高级numpy用户使用。
矩阵应该是什么。当我用几个参数尝试你的代码时,我在map
步骤中得到一个错误:
In [495]: X = [np.random.randint(0, 2 ** 2 - 1)for _ in range(4)]
...: Matrix = np.asarray([list(map(int, list(x))) for x in X])
...:
-----> 2 Matrix = np.asarray([list(map(int, list(x))) for x in X])
....
TypeError: 'int' object is not iterable
In [496]: X
Out[496]: [1, 2, 1, 0]
X
只是一个数字列表吗?不是某种数组列表吗?为什么要使用矩阵
步骤?它是否试图将嵌套列表转换为整数?即使randint
已经创建了整数?然后,您将转换为浮点
?
您可以通过以下两种等效方法之一来实现:
import numpy as np
a = np.random.normal(size=(10,10))
a.tofile('test1.dat')
with open('test2.dat', 'wb') as f:
f.write(a.tobytes())
# diff test1.dat test2.dat
请参阅tofile
的文档。然而,从原始示例看,似乎Matrix
无法转换为ndarray
。
如何创建一个预Compiled二进制框架,类似于在这个git repo上使用cloud firestore所做的事情:https://github.com/invertase/firestore-ios-sdk-frameworks 谢谢!
我有以下代码: 如何打开这个二进制文件并检查是否确实写入了整数10
问题内容: 我有一个数组: 我想创建的另一个数组和其唯一的元素为x。 我已经试过这段代码: 但是它会产生一系列形状。 我当然可以做: 但我希望该解决方案能够轻松扩展到更大的形状,例如: 无需在所有索引上运行循环。 有什么建议可以做到这一点吗? UPD1 数组可能不同,如: 它们也可能具有不同的形状,但是对于那种情况,一个简单的构造函数就可以了 UPD2 我真的想要一种可以处理任意形状(不一定都一样
使用称为二进制的数据结构来存储大量原始数据。 二进制文件以比列表或元组更加节省空间的方式存储数据,并且运行时系统针对二进制文件的有效输入和输出进行了优化。 二进制文件以整数或字符串的顺序编写和打印,用小于或大于括号的双精度括起来。 以下是Erlang中二进制文件的示例 - 例子 (Example) -module(helloworld). -export([start/0]). start()
问题内容: 我使用以下matlab代码创建了一个二进制文件: 我可以使用以下C代码读取此文件: 上面的C代码可以读取正确的结果。但是,我现在想在JAVA中读取这样的二进制文件。我的代码如下所示: 它确实在n + 1次循环后终止,但结果不正确。有人可以帮我吗。非常感谢! 问题答案: 正如我所猜测的那样,这是一个字节序问题,即您的二进制文件被写为低字节序的整数(可能是因为您使用的是Intel或类似的C
问题内容: 我用Java编写了AWS Lambda函数。我用来上传Lambda 的工具(Terraform)想要使用jar文件的SHA-256哈希值来跟踪是否需要上传新版本的Lambda。 问题在于,不同OS平台(Windows和Linux)上的不同JDK创建的字节码略有不同(即使使用相同的JDK“更新”版本)。这意味着,如果我在Windows上上传了一个lambda,然后在Linux上重新运行了