首页 > 解决方案 > 错误:无法将大小为 65536 的数组重新整形为形状 (2,227)

问题描述

我有一个数据,我用下面的代码读取它。

 file_path0='C:\\Users\\ASUS\\Downloads\\A03VM.bin'
 def read_file():
     data=np.fromfile(file_path0,np.float64)
     print(data)
     return data

然后我想把它变成二维。我运行下面的代码:

data=np.reshape(data, (2,227))

但我收到此错误:

无法将大小为 65536 的数组重塑为形状 (2,227)

我能做些什么?问题是什么?

标签: pythontensorflow

解决方案


因此,您需要使用参数进行重塑,-1这意味着您将numpy推断出正确的尺寸。

因此,如果您想将其重塑为第一个维度,2您应该执行以下操作:

import numpy as np
x = np.zeros((65536,))
print(x.shape)  # (65536,)
x_reshaped = np.reshape(x, (2, -1))
print(x_reshaped .shape)  # (2, 32768)

如果要推断第一个维度,则需要执行以下操作:

import numpy as np
x = np.zeros((65536,))
print(x.shape)  # (65536,)
x_reshaped = np.reshape(x, (-1, 256))
print(x_reshaped .shape)  # (256, 256)

请注意,在第二种情况下将227不起作用,因为65536/227不是整数值,因此numpy无法推断它。

您可以参考文档

新形状应与原始形状兼容。如果是整数,则结果将是该长度的一维数组。一个形状维度可以是-1。在这种情况下,该值是从数组的长度和剩余维度推断出来的。


推荐阅读