我有一个numpy数组arr1
,它是函数的输出。数组有一个“额外”维度,这是由numpy数组内部的每个元素被强制转换为numpy数组本身造成的。在
arr1.shape
输出(100, 20, 1)
如果我打印数组,print(arr1[0])
输出
array([[-212537.61715316],
[ 7258.38476409],
[ 37051.91250884],
[-146278.00512207],
[-185792.24620168],
[-200794.59538468],
[-195981.27879612],
[-177912.26034464],
[-152212.805867 ],
[-118873.26452198],
[ -64657.64682999],
[ 306884.11196766],
[-191073.9891907 ],
[-104992.44840277],
[ -67834.43041102],
[ -21810.77063542],
[ 17307.24511071],
[ 55607.49775471],
[ 91259.82533592],
[ 119207.40589797]])
如果我用arr1.reshape((100,20))
重塑形状,我得到print(arr1.reshape((100,20))[0])
的以下输出:
我的问题是:如何排除这个“额外的”数组,但保留数组arr1
的原始形状?在
使用.reshape()
是最好的方法吗?如果没有,最好的办法是什么?在
您可能正在寻找
numpy.squeeze
:http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.squeeze.html
请注意另一个答案,因为您的
reshape
应该已经起作用了,您只是错误地查看了输出。在您正确地使用了
reshape
。在它的形状将是(100,20),与没有最后一个维度的
arr1
相同。在arr1[0]
具有形状(20,1),因此打印为列。在arr2[0]
具有形状(20,),因此打印为一行(计算括号)。您可能不喜欢显示,但形状是正确的。在squeeze
也可以用来去掉额外的维度,但结果是一样的。在print(arr2[0][:,None])
应作为列打印。它有效地增加了额外的尺寸在打印之前。在相关问题 更多 >
编程相关推荐