Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:重塑数组的数组_Python_Arrays_Numpy_Reshape - Fatal编程技术网

Python:重塑数组的数组

Python:重塑数组的数组,python,arrays,numpy,reshape,Python,Arrays,Numpy,Reshape,是否可以按以下方式重塑阵列阵列的形状: np.array([[1,1,1,1,1,1], [1,0,0,0,0,1], [1,0,1,1,0,1]]) np.array([ [[1,1],[1,0],[1,0]], [[1,1],[0,0],[1,1]], [[1,1],[0,1],[0,1]]]) 分成多个3x2阵列,如下所示: np.array([[1,1,1,1,1,1], [1,0,0,0,0,1],

是否可以按以下方式重塑阵列阵列的形状:

np.array([[1,1,1,1,1,1],
          [1,0,0,0,0,1],
          [1,0,1,1,0,1]])
np.array([
    [[1,1],[1,0],[1,0]],
    [[1,1],[0,0],[1,1]],
    [[1,1],[0,1],[0,1]]])
分成多个3x2阵列,如下所示:

np.array([[1,1,1,1,1,1],
          [1,0,0,0,0,1],
          [1,0,1,1,0,1]])
np.array([
    [[1,1],[1,0],[1,0]],
    [[1,1],[0,0],[1,1]],
    [[1,1],[0,1],[0,1]]])
提前谢谢

numpy具有重塑形状的能力

[29]中:a=np.数组[[1,1,1,1,1], ...: [1,0,0,0,0,1], ...: [1,0,1,1,0,1]] 在[30]中:a.3,3,2 出[30]: 数组[[[1,1], [1, 1], [1, 1]], [[1, 0], [0, 0], [0, 1]], [[1, 0], [1, 1], [0, 1]]]
不过,这只是改变了视图。如果您希望a=a.reforme3,3,2

获得所需的特定输出,则可以重新分配。您需要通过传入要转换的列来重新调整特定列的形状和转换

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

使用arr.restrape3、-1、2进行重塑可以提供:

array([[[1, 1],[1, 1],[1, 1]],
       [[1, 0],[0, 0],[0, 1]],
       [[1, 0],[1, 1],[0, 1]]])
组是正确的,但希望将列分组为行。这就是它的用途。在这种情况下,您希望交换第一个轴和第二个轴

您可以通过以下步骤完成此操作:

import numpy as np

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

arr.reshape(3,-1, 2).transpose([1, 0, 2])
输出:

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

如果可以将一个阵列重塑为另一个阵列,最好的回答方法是比较它们的展平形式:

arr = np.array([[1,1,1,1,1,1], [1,0,0,0,0,1], [1,0,1,1,0,1]])
arr2 = np.array([[[1,1],[1,0],[1,0]], [[1,1],[0,0],[1,1]], [[1,1],[0,1],[0,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]
在这种情况下,这是不可能的,因为结果是不同的。您还需要交换:

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

欢迎来到堆栈溢出!请拿下,阅读,并提供。为我实现此功能对于此网站来说是离题的。你必须做出诚实的尝试,然后就你的算法或技术提出一个具体的问题。假设顶部是,你可以做a.Reforme3,3,2来把它变成底部的形状。我认为不可能用直线的方式来重塑,因为两种形状的展平形式是不同的。你需要做转置和重塑。差不多了!我有点想要这个结果的转置数组,但是如果我使用a.reforme3,3,2.T,它会变成一个3x3数组的数组。如何将这三个3x2阵列进行转置?这就是我要找的!非常感谢你!你能简单解释一下重塑的过程吗?@JúlioFortunato,见编辑。希望这将为您指明正确的方向。如果原始列表是一个30x30的列表,那么转置和重塑值是否相同?