重塑NumPy数组

重塑NumPy数组

NumPy是一个通用的数组处理包。它提供了一个高性能的多维数组对象,以及处理这些数组的工具。它是用Python进行科学计算的基本软件包。Numpy基本上用于创建n维的数组。
重塑numpy数组仅仅意味着改变给定数组的形状,形状基本上告诉了数组的元素数量和维度,通过重塑数组,我们可以添加或删除维度或改变每个维度的元素数量。
为了重塑一个numpy数组,我们使用reshape方法来重塑给定的数组。

语法: array.reshape(shape)
参数:它以元组为参数,元组是要形成的新形状。
返回:它返回numpy.ndarray

注意:我们也可以使用np.reshape(array, shape)命令来重塑数组。
reshape:一维到二维
在这个例子中,我们将把一维数组的形状(1,n)重塑为二维数组的形状(N,M),这里的M应该等于n/N,而N应该是n的因子。

# importing numpy
import numpy as np
 
# creating a numpy array
array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])
 
# printing array
print("Array : " + str(array))
 
# length of array
n = array.size
 
# N-D array N dimension
N = 4
 
# calculating M
M = n//N
 
# reshaping numpy array
# converting it to 2-D from 1-D array
reshaped1 = array.reshape((N, M))
 
# printing reshaped array
print("First Reshaped Array : ")
print(reshaped1)
 
# creating another reshaped array
reshaped2 = np.reshape(array, (2, 8))
 
# printing reshaped array
print("Second Reshaped Array : ")
print(reshaped2)

输出 :

Array : [ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16]
First Reshaped Array : 
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]
 [13 14 15 16]]
Second Reshaped Array : 
[[ 1  2  3  4  5  6  7  8]
 [ 9 10 11 12 13 14 15 16]]

整形:1-D到3-D
在此我们将看到如何将一个一维数组重塑为三维数组。一个三维数组是二维数组的一维数组。

# importing numpy
import numpy as np
 
# creating a numpy array
array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])
 
# printing array
print("Array : " + str(array))
 
 
# reshaping numpy array
# converting it to 3-D from 1-D array
reshaped = array.reshape((2, 2, 4))
 
# printing reshaped array
print("Reshaped 3-D Array : ")
print(reshaped)

输出 :

Array : [ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16]
Reshaped 3-D Array : 
[[[ 1  2  3  4]
  [ 5  6  7  8]]

 [[ 9 10 11 12]
  [13 14 15 16]]]

将N-D阵列改成1-D阵列
在这个例子中,我们将看到如何重塑一个二维或三维数组来形成一个一维数组。我们也可以用reshape(-1)来做这个,这里-1是未知维度。

# importing numpy
import numpy as np
 
# creating a numpy array
array = np.array([[1, 2, 3],
                 [4, 5, 6],
                 [7, 8, 9]])
 
# printing array
print(" 2-D Array : ")
print(array)
 
 
# reshaping numpy array
# converting it to 1-D from 2-D array
reshaped = array.reshape((9))
 
# or we can use unknown dimension
# reshaped = array.reshape((-1))
 
# printing reshaped array
print("Reshaped 1-D Array : ")
print(reshaped)

输出 :

 2-D Array : 
[[1 2 3]
 [4 5 6]
 [7 8 9]]
Reshaped 1-D Array : 
[[1 2 3 4 5 6 7 8 9]]

使用未知尺寸进行整形
我们可以通过使用-1作为其中一个维度来重塑一个数组,尽管我们不知道所有的新维度,但是我们应该知道所有的其他维度来使用未知维度。

# importing numpy
import numpy as np
 
# creating a numpy array
array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])
 
# printing array
print("Array : " + str(array))
 
 
# reshaping numpy array
# converting it to 3-D from 1-D array
reshaped1 = array.reshape((2, 2, -1))
 
# printing reshaped array
print("First Reshaped Array : ")
print(reshaped1)
 
 
# converting it to 2-D array
reshaped2 = array.reshape((4, -1))
 
# printing reshaped array
print("Second Reshaped Array : ")
print(reshaped2)

输出 :

Array : [ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16]
First Reshaped Array : 
[[[ 1  2  3  4]
  [ 5  6  7  8]]

 [[ 9 10 11 12]
  [13 14 15 16]]]
Second Reshaped Array : 
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]
 [13 14 15 16]]

重塑过程中出现错误
当我们试图将一个数组重塑为数学上不可能的形状时,就会产生错误,说不能重塑该数组。例如,当我们试图将4个元素的一维数组重塑为二维数组(3,3)时,是不可能的,因为新的数组需要9个元素。

# importing numpy
import numpy as np
 
# creating a numpy array
array = np.array([[1, 2, 3],
                 [4, 5, 6],
                 [7, 8, 9]])
 
# printing array
print(" 2-D Array : ")
print(array)
 
 
# reshaping numpy array
# converting it to 1-D from 2-D array
# reshaping it into 1, 5
reshaped = array.reshape((1, 5))
 
# or we can use
 
# printing reshaped array
print("Reshaped 1-D Array : ")
print(reshaped)
ValueError: cannot reshape array of size 9 into shape (1, 5)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程