📜  Python numpy.reshape()

📅  最后修改于: 2020-10-27 04:11:34             🧑  作者: Mango

Python的numpy.reshape()

numpy.reshape()函数在NumPy包中可用。顾名思义,重塑意味着“形状变化”。 numpy.reshape()函数可帮助我们在不更改数据的情况下获得数组的新形状。

有时,我们需要将数据从宽到长整形。因此,在这种情况下,我们必须使用reshape()函数来重塑数组。

句法

numpy.reshape(arr, new_shape, order='C')

参量

reshape()函数具有以下参数:

1)arr:array_like

这是一个ndarray。这是我们要重塑的源数组。此参数是必需的,并且在numpy.reshape()函数起着至关重要的作用。

2)new_shape:int或int元组

我们要转换原始数组的形状应与原始数组兼容。如果是整数,结果将是该长度的一维数组。一个形状尺寸可以为-1。在此,该值近似于数组的长度和其余维度。

3)顺序:{‘C’,’F’,’A’},可选

这些索引order参数在reshape()函数起着至关重要的作用。这些索引顺序用于读取源数组的元素,并使用此索引顺序将元素放置到重新排列的数组中。

  • 索引顺序“ C”是指使用类似C的索引顺序读取/写入元素,其中最后一个轴索引变化最快,回到第一个轴索引变化最快。
  • 索引顺序“ F”表示使用类似于Fortran的索引顺序读取/写入元素,其中最后一个轴索引变化最快,而第一个轴索引变化最快。
  • “ C”和“ F”顺序不占用基础数组的内存布局量,仅指索引的顺序。
  • 索引顺序“ A”表示在arr在内存中连续时以类似于Fortran的索引顺序读取/写入元素,否则使用类似于C的顺序。

退货

该函数返回一个ndarray。如果可能,它是一个新的视图对象;否则,它将是副本。不能保证返回数组的内存布局。

示例1:类似C的索引排序

import numpy as np
x=np.arange(12)
y=np.reshape(x, (4,3))
x
y

输出:

array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
array([[ 0,  1,  2,  3],
           [ 4,  5,  6,  7],
           [ 8,  9, 10, 11]])

在上面的代码中

  • 我们导入了别名为np的numpy。
  • 我们使用np.arrange()函数创建了一个数组’a’。
  • 我们已经声明了变量“ y”并分配了np.reshape()函数的返回值。
  • 我们已经在函数传递了数组’x’和形状。
  • 最后,我们尝试printarr的值。

在输出中,该数组已表示为三行四列。

示例2:等效于C ravel然后C重塑

import numpy as np
x=np.arange(12)
y=np.reshape(np.ravel(x),(3,4))
x
y

ravel()函数用于创建连续的扁平数组。返回包含输入元素的一维数组。仅在需要时才进行复制。

输出:

array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
array([[ 0,  1,  2,  3],
           [ 4,  5,  6,  7],
           [ 8,  9, 10, 11]])

示例3:类Fortran索引排序

import numpy as np
x=np.arange(12)
y=np.reshape(x, (4, 3), order='F')
x
y

输出:

array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
array([[ 0,  4,  8],
           [ 1,  5,  9],
           [ 2,  6, 10],
           [ 3,  7, 11]])

在上面的代码中

  • 我们导入了别名为np的numpy。
  • 我们使用np.arrange()函数创建了一个数组’a’。
  • 我们已经声明了变量“ y”,并分配了np.reshape()函数的返回值。
  • 我们已通过阵列“x”和形状和Fortran样在函数索引顺序。
  • 最后,我们尝试printarr的值。

在输出中,该数组已表示为四行三列。

示例4:类Fortran索引排序

import numpy as np
x=np.arange(12)
y=np.reshape(np.ravel(x, order='F'), (4, 3), order='F')
x
y

输出:

array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
array([[ 0,  4,  8],
           [ 1,  5,  9],
           [ 2,  6, 10],
           [ 3,  7, 11]])

示例5:未指定的值推断为2

import numpy as np
x=np.arange(12)
y=np.reshape(x, (2, -1))
x
y

在上面的代码中

  • 我们导入了别名为np的numpy。
  • 我们使用np.arrange()函数创建了一个数组’a’。
  • 我们已经声明了变量“ y”并分配了np.reshape()函数的返回值。
  • 我们在函数传递了数组’x’和形状(未指定值)。
  • 最后,我们尝试printarr的值。

在输出中,该数组已表示为两行五列。

输出:

array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
array([[ 0,  1,  2,  3,  4,  5],
           [ 6,  7,  8,  9, 10, 11]])