首页 > NumPy 阅读数:52

NumPy修改数组形状

数组的形状取决于其每个轴上的元素个数,也就是数组的维度。在数组的操作中,常常要修改数组的形状。在 NumPy 中,修改数组的形状可直接用一个正整数元组来设置数组的维度,或者用 reshape() 函数和 resize() 函数来设置维度。

用元组设置维度

用元组设置维度修改数组形状的方法如下:

数组名.shape = (x0,x1,x2,…,xn)

参数 x0,…,xn 表示数组中每个维度上的大小,例如 arr.shape=(3,4) 表示将 arr 数组修改成 3 行 4 列数组,利用该方法会改变原数组 arr 的形状。

reshape() 函数

用 reshape() 函数是改变数组形状最常用的方法,reshape() 函数的参数为一个正整型元组,分别指定数组在每个维度上的大小。用 reshape() 函数修改数组形状的方法如下:

数组名.reshape(x0,x1,x2,…,xn)

参数 x0,…,xn 表示数组中每个维度上的大小。例如 arr.reshape(3,4) 生成一个 3 行 4 列新数组,而原数组 arr 不会改变。如果指定的维度和数组的元素数目不吻合,则函数将抛出异常。

resize() 函数

该函数可返回指定大小的新数组。如果新数组的大小大于原始数组的大小,则包含原始数组中的元素的重复副本,该函数修改数组形状的方法如下:

数组名.resize(x0,x1,x2,…,xn)

参数 x0,…,xn 表示数组中每个维度上的大小。例如 arr.resize(3,4) 表示将 arr 数组修改成 3 行 4 列数组,原数组 arr 形状改变。这种方法与用 shape 属性修改数组的形状相似。

修改数组形状的示例

示例代码 example1 如下。
# -*- coding: UTF-8 -*-
import numpy as np
#创建3行4列数组
arr = np.array([[0,1,2,4],[5,6,7,8],[9,10,11,12]])
#显示数组形状
print(arr.shape)
#用shape属性改变数组形状为4行3列
#用shape属性改变数组形状为4行3列
arr.shape = (4,3)      #将arr数组形状修改为4行3列
print(arr,arr.shape)
#用reshape函数生成形状为2行6列数组arr_b
arr_b = arr.reshape((2,6))  #生成形状为2行6列数组arr_b,arr数组没变化
pint(arr,arr_b)  
#用resizee函数改变数组arr形状为2行6列
arr_c = arr.resize((2,6))   #arr改变形状为2行6列数组,arr_c为none
print(arr,arr_c)