Python np.array上的维数变化
假设我们有一个大小为(2,2,4)的np.array: 我不知道如何从上一个数组中获取此数组(大小为(2,2,2,2)),它应该包含来自我的_数组的相同数据:Python np.array上的维数变化,python,arrays,numpy,Python,Arrays,Numpy,假设我们有一个大小为(2,2,4)的np.array: 我不知道如何从上一个数组中获取此数组(大小为(2,2,2,2)),它应该包含来自我的_数组的相同数据: np.array([[[[ 0., 0.], [ 0., 0.]], [[ 0., 0.], [ 0., 0.]]], [[[ 0., 0.], [ 0., 0.]], [[ 0.,
np.array([[[[ 0., 0.],
[ 0., 0.]],
[[ 0., 0.],
[ 0., 0.]]],
[[[ 0., 0.],
[ 0., 0.]],
[[ 0., 0.],
[ 0., 0.]]]])
我试过:
但我得到了:
array([[[[ 0.],
[ 0.],
[ 0.],
[ 0.]],
[[ 0.],
[ 0.],
[ 0.],
[ 0.]]],
[[[ 0.],
[ 0.],
[ 0.],
[ 0.]],
[[ 0.],
[ 0.],
[ 0.],
[ 0.]]]])
感谢您的支持。您需要
np。重塑
而不是np。展开dims
:
>>> my_array.reshape(2,2,2,2)
array([[[[ 0., 0.],
[ 0., 0.]],
[[ 0., 0.],
[ 0., 0.]]],
[[[ 0., 0.],
[ 0., 0.]],
[[ 0., 0.],
[ 0., 0.]]]])
这是用于此任务的最简单方法:
In [2]: my_array.reshape(2,2,2,2)
Out[2]:
array([[[[ 0., 0.],
[ 0., 0.]],
[[ 0., 0.],
[ 0., 0.]]],
[[[ 0., 0.],
[ 0., 0.]],
[[ 0., 0.],
[ 0., 0.]]]])
只要有可能,使用重塑
将创建阵列的新视图(而不是复制任何基础数据)。在这种特殊情况下,返回具有所需形状和尺寸数的新视图并不困难
如果您对重塑是否会复制数据有任何疑问,一个有用的方法是尝试直接设置数组的.shape
属性:
my_array.shape = (2,2,2,2)
如果在不复制数据的情况下无法进行整形,NumPy将引发错误而不是复制。使用整形命令:
In [3]: a=np.arange(2*2*4).reshape(2,2,4)
In [4]: a
Out[4]:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]])
In [5]: a.reshape(2,2,2,2)
Out[5]:
array([[[[ 0, 1],
[ 2, 3]],
[[ 4, 5],
[ 6, 7]]],
[[[ 8, 9],
[10, 11]],
[[12, 13],
[14, 15]]]])
成功了。感谢所有回答我问题的人。我肯定应该对文档有更好的了解。
my_array.shape = (2,2,2,2)
In [3]: a=np.arange(2*2*4).reshape(2,2,4)
In [4]: a
Out[4]:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]])
In [5]: a.reshape(2,2,2,2)
Out[5]:
array([[[[ 0, 1],
[ 2, 3]],
[[ 4, 5],
[ 6, 7]]],
[[[ 8, 9],
[10, 11]],
[[12, 13],
[14, 15]]]])