Numpy矩阵创建与操作详解:从基础构造到维度变换

林舟
林舟
发布时间:2026-10-14| 6人浏览过
原创

本文详细介绍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)#元素的数据类型

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。