我正在做一个ConvNet,需要将一个图像与一个整数(1或0)一起保存,这表示是否采取了一个动作。我该怎么做?我试过这个:
key_pressed = np.array(key_check(self.key)) # key_check() returns 1 or 0
window = np.array(window) # window is opened with cv2
print(window.shape, key_pressed.shape) # (474, 31) (1,)
print(np.concatenate((window, key_pressed)))
^^
ValueError: all the input arrays must have same number of dimensions
看到阵列的大小不同,我是否正在做我想要的numpy?关于如何保存这些数据的任何想法?
答案 0 :(得分:2)
NumPy不会让你简单地连接任意大小的东西:它打破了数组或矩阵的功能定义。你试图做一个简单的并置,而不是功能连接。你所要做的就是并排展示它们吧?这不是矩阵运算。例如,你真的设想在得到的胶合数组上进行矩阵乘法???
您需要一个简单的容器来容纳这两个项目。我希望一个微不足道的class
能为你完成这项工作。为结果对编写组合显示方法,并将其用于渲染。
答案 1 :(得分:0)
查看scipy.io.savemat
和loadmat
:
savemat(your_path, dict(key=key_pressed, window=window))
然后使用loadmat
,你将获得一个带有你想要的钥匙和框架的字典。
甚至还有一个do_compression
参数。
编辑:形状中的不兼容性与它无关,因为您没有创建新数组,而是将键和窗口分别保存在同一个文件中。
In [53]: from scipy import io
In [54]: a = np.zeros([3, 4])
In [55]: b = np.ones([5, 17])
In [56]: io.savemat("foo.mat", dict(a=a, b=b))
它就像一个魅力。