0
我有一个涉及np.reshape的简单问题。我正在尝试学习如何使用np.reshape从一维数组创建二维数组。我看着这个教程,做它,但我仍然对本教程的一些问题..从1D阵列制作二维数组时,一个简单的numpy重塑函数
import numpy as np
a = np.arange(8*16)
frame_length = 8
a_framed = np.reshape(a, (-1, frame_length))
print (a_framed)
这里是我的问题:
- 是帧_确定新的二维数组中的列数?如果是这样,为什么不把数字8放在'a_framed'中?这是不可能的吗?
- 'a_framed'中的'-1'是什么?它有什么作用? (在教程中省略或对我来说不足)
谢谢! Cece
看起来像是过度杀伤...考虑... b = np.arange(8 * 16).reshape(8,16)...注意,如果您使用n * m产生一个范围,您可以如果对(m,n)进行重塑并将其与重塑(n,m)进行比较。 (-1代替了重塑中的第一个术语,以任意数量来制作它)2D – NaN
嗨!感谢您的回复。请您详细说明-1的作用?谢谢! –
在您的示例中,np。 reshape需要数组'a'和形状,形状为(-1,frame_length)...因为指定了2个地方,所以你需要重塑为2D数组。现在,你只能重塑一个数组来匹配输入的大小是8 * 16 = 128。在整形中,第二项被指定为等于8 ... -1的frame_length,实际上意味着'不管需要'如何保持数组的大小与2D形状...在这种情况下...(16,8)size = np.prod(a.shape)。可以更改形状,如b = np.reshape(a,(2,2,4,8) ))查看相同数据的其他形状 – NaN