如何在np.array旁边保存整数

时间:2018-05-04 17:30:26

标签: python numpy opencv machine-learning

我正在做一个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?关于如何保存这些数据的任何想法?

2 个答案:

答案 0 :(得分:2)

NumPy不会让你简单地连接任意大小的东西:它打破了数组或矩阵的功能定义。你试图做一个简单的并置,而不是功能连接。你所要做的就是并排展示它们吧?这不是矩阵运算。例如,你真的设想在得到的胶合数组上进行矩阵乘法???

您需要一个简单的容器来容纳这两个项目。我希望一个微不足道的class能为你完成这项工作。为结果对编写组合显示方法,并将其用于渲染。

答案 1 :(得分:0)

查看scipy.io.savematloadmat

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))

它就像一个魅力。