Numpy矩阵创建与操作详解:从基础构造到维度变换
本文详细介绍Numpy库中矩阵的多种创建方式,包括使用array、zeros、ones、empty、rand、arange等方法生成不同维度和类型的矩阵。重点解析矩阵与标量的加减乘运算规则,以及利用reshape进行维度转换的注意事项,帮助开发者高效掌握Numpy基础操作。
Numpy矩阵创建与操作概述
Numpy是Python中广泛使用的科学计算库,在矩阵计算领域应用极为普遍。相比纯Python列表操作,Numpy对矩阵的处理速度具有显著优势。
一、构造矩阵的基本方法
矩阵的构造可以通过多种途径实现,具体取决于需求场景。
Python原生方法构造矩阵
1. 利用Python原生方法构造矩阵
- 生成一维矩阵示例
# 使用python自带的range()方法生成一个矩阵
a = list(range(100))#range()产生从0-99的一个列表
print(a)

- 生成二维及多维矩阵示例
# 使用python自带的range()方法生成一个矩阵
a = list([[1,2,3],
[4,5,6],
[7,8,9]])
print(a)
Numpy内置方法生成矩阵
2. 使用Numpy内置方法生成矩阵
通过Numpy生成的矩阵数据类型为numpy.ndarray,这与Python原生的列表类型存在本质区别。
array()方法:列表转矩阵
(1)使用array()方法生成矩阵
#numpy入门
import numpy as np
data = [6,7.5,8,0,1]
data1 = [[1,2,3],[4,5,6]]
arr = np.array(data)
arr1 = np.array(data1)
print(arr)
print(arr1)

array()方法能够将一个列表转换为维度相同的Numpy矩阵对象。
随机矩阵生成:rand与randn
(2)生成随机矩阵的方法:rand()与randn()
import numpy as np
#生成一个随机数矩阵
data = np.random.randn(2,3)#是从标准正态分布中返回一个或多个样本值
data1 = np.random.rand(2,3)#随机样本位于[0, 1)中
print(data)
print(data1)

矩阵与标量的加减乘运算
(3)矩阵的加法与乘法运算:在Numpy矩阵中,矩阵与数字进行相加或相乘操作时,数组中的每一个元素都会执行相应的相加或相乘运算。
import numpy as np
data = np.random.randn(10)#是从标准正态分布中返回一个或多个样本值
print(data)
print("data * 10 :\n",data*10)#每一个元素乘以十
print("data+data:\n",data+data)#实现数组中每一个位置自加操作

零矩阵与一矩阵的生成
(4)生成零矩阵
可以使用Numpy的zeros()方法来生成元素值全为0的矩阵。
import numpy as np
data = np.zeros(10)#生成一个一维的全零矩阵,矩阵的元素为十个
print("data:",data)
data1 = np.zeros((3,4))#生成一个三行四列的全零矩阵
print("data1:",data1)
data2 = np.zeros((3,4,3))
print("data2:",data2)#生成一个三维的全零矩阵

(5)生成一矩阵
与零矩阵类似,Numpy中的ones()方法可以生成元素值全为1的矩阵。
import numpy as np
data = np.ones(10)#生成一个一维的全零矩阵,矩阵的元素为十个
print("data:",data)
data1 = np.ones((3,4))#生成一个三行四列的全零矩阵
print("data1:",data1)
data2 = np.ones((3,4,3))
print("data2:",data2)

empty()方法:未初始化内存处理
(6)empty()方法的使用
Python中也可以使用numpy.empty()方法来生成一些看似是0的数,语法和ones()方法一样
#numpy入门
import numpy as np
data = np.empty(10)#生成一个一维的全零矩阵,矩阵的元素为十个
print("data:",data)
data1 = np.empty((3,4))#生成一个三行四列的全零矩阵
print("data1:",data1)
data2 = np.empty((3,4,3))
print("data2:",data2)

即使编译器显示的值为0,其实际值并非0,而是一个非常接近0的数。
#numpy入门
import numpy as np
data1 = np.empty((3,4))#生成一个三行四列的全零矩阵
print("data1:\n",data1)
print("1/data1:\n",1/data1)

inf表示无穷大,如果data1中数据的值为0,在运行过程中解释器会出错。
#注意:认为np.empty会返回全0数组的想法是不安全的。很多情况下(如前所示),它返回的都是一些未初始化的垃圾值。
arange()方法:指定范围与步长
(7)arange()方法
该方法类似于Python自带的range()方法。
import numpy as np
a = np.arange(10)
b = np.arange(2,20)
c = np.arange(0,50,5)
print("a:",a)
print("b:",b)
print("c:",c)
当只有一个参数n时,表示产生一个从[0–n)的不包含n的一个矩阵
当有两个参数m,n时,表示产生一个从[m,n)的不包含n的一个矩阵
当含有三个参数m,n,l时,表示从m开始,每次以l为步长,产生一个矩阵,最大值不超过n

reshape()方法:维度变换
(8)reshape()方法:重新生成矩阵的维度大小
import numpy as np
a = np.arange(10)
print(a)
a=a.reshape(2,5)
print(b)

上例中,将一个一维的十元素矩阵转换成一个两行五列的矩阵。
注意:使用reshape()方法从一维转多维时,一维矩阵的元素个数必须与多维矩阵的相同,也即是上例中的10=2*5,如若不相等的话解释器或出现错误。
矩阵属性:维度、形状与类型
(9)获取矩阵大小相关的属性值
import numpy as np
array = np.array([[1,2,3],
[4,5,6],
[7,8,9]])
print(array)
print(array.ndim)#维度
print(array.shape)#各维度的值
print(array.size)#元素个数
print(array.dtype)#元素的数据类型

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









