微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python:重塑数组

如何解决Python:重塑数组

是否可以像这样重塑数组的数组:

np.array([[1,1,1],[1,1]])

分成多个3x2阵列,如下所示:

np.array([
    [[1,0],0]],[[1,[0,1]],1]]])

谢谢!

解决方法

numpy可以reshape()

In [29]: a=np.array([[1,1,1],...:           [1,1]])

In [30]: a.reshape((3,3,2))
Out[30]:
array([[[1,[1,1]],[[1,0],[0,1]]])

这只是改变了视图。如果需要a = a.reshape((3,2))

,可以重新分配 ,

要获得所需的特定输出,您需要调整形状和转置特定的列(通过传递要转置的列)。

首先,您需要重塑形状以获取所需的分组。使用-1就像通配符一样,将使中间值成为正确填写形状所需的值。

使用arr.reshape(3,-1,2)重塑可以为您提供:

array([[[1,1]]])

组是正确的,但希望将列分组为行。这就是transpose的用途。在这种情况下,您想交换第一轴和第二轴。

您可以像这样一步来实现:

import numpy as np

arr = np.array([
    [1,1]])

arr.reshape(3,2).transpose([1,2])

输出:

array([[[1,0]],1]]])
,

回答是否可能将一个数组整形为另一个数组的最好方法是比较它们的展平形式:

arr = np.array([[1,1]])
arr2 = np.array([[[1,1]]])
>>> print(arr.flatten())
[1 1 1 1 1 1 1 0 0 0 0 1 1 0 1 1 0 1]
>>> print(arr2.flatten())
[1 1 1 0 1 0 1 1 0 0 1 1 1 1 0 1 0 1]

在这种情况下,由于结果不同,因此是不可能的。您需要另外swapaxes

arr.reshape(3,2).swapaxes(0,1)

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。