NumPy numpy.reshape()的使用

NumPy numpy.reshape()的使用

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

有时候,我们需要将数据从宽变成长。因此在这种情况下,我们需要使用reshape()函数来改变数组的形状。

语法

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

参数

reshape()函数有以下参数:

1) arr: array_like

这是一个ndarray。这是我们想要调整形状的源数组。这个参数是必需的,在numpy.reshape()函数中起着至关重要的作用。

2) new_shape: int或者int元组

我们想要将原始数组转换为的形状应该与原始数组兼容。如果是一个整数,则结果将是一个长度为该整数的1-D数组。一个形状维度可以为-1。在这种情况下,该值由数组的长度和剩余维度进行近似。

3) order: {‘C’, ‘F’, ‘A’},可选参数

这些索引顺序参数在reshape()函数中起着重要作用。这些索引顺序用于读取源数组的元素,并使用这个索引顺序将元素放置到重塑后的数组中。

  1. 索引顺序 ‘C’ 表示按照 C 风格的索引顺序来读取/写入元素,其中最后的轴索引变化最快,从第一个轴索引变化最慢。
  2. 索引顺序 ‘F’ 表示按照 Fortran 风格的索引顺序来读取/写入元素,其中最后的轴索引变化最慢,而第一个轴索引变化最快。
  3. ‘C’ 和 ‘F’ 顺序不考虑底层数组的内存布局,只与索引顺序有关。
  4. 索引顺序 ‘A’ 表示按照 Fortran 风格的索引顺序来读取/写入元素,当 arr 是连续的内存时,否则使用 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.imported numpy并给它取了别名np。
  • 我们使用np.arrange()函数创建了一个名为’a’的数组。
  • 我们声明了变量’y’并将np.reshape()函数的返回值赋给它。
  • 我们在函数中传递了数组’x’和形状。
  • 最后,我们尝试打印arr的值。

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

示例2:与C ravel然后C reshape等效

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-like索引顺序。
  • 最后,我们尝试打印arr的值。

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

示例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’和形状(未指定值)。
  • 最后,我们尝试打印arr的值。

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

输出:

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]])

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程