list:列表
array:数组
ndarray:n维的array
matrix:矩阵
为什么要使用NumPy?
Python中的列表是存储的地址,NumPy数组比Python列表更快,更紧凑。数组消耗较少的内存,使用起来很方便。NumPy使用更少的内存来存储数据,并且提供了一种指定数据类型的机制。这使得代码可以进一步优化。
相同点:
1、列表和数组在Python中用于存储数据(任何数据类型的字符串,整数等),也可以对它们进行索引和迭代。
2、都具有多维的形式:列表可嵌套成多维的,数组可以指定大小或嵌套成多维的
3、列表和数组都可使用len()
不同点:
1、列表可包含不同的数据类型,数组必须包含包含相同的数据类型
2、列表可以使用shape()
,但无法使用list.shape
,数组和可以使用
3、四则运算如下:
# array 四则运算 #
a=np.array([4,8,20,16])
a1=a/4
a2=a*2
a3=a+4
a4=a-4
print("除法结果:",a1)
print('乘法结果:',a2)
print('加法结果:',a3)
print('减法结果:',a4)
# 结果:逐元素运算
# 除法结果: [1. 2. 5. 4.]
# 乘法结果: [ 8 16 40 32]
# 加法结果: [ 8 12 24 20]
# 减法结果: [ 0 4 16 12]
# list 四则运算 #
b=[4,8,20,16]
#b1=b/4
b2=b*2
#b3=b+4
#b4=b-4
#print("除法结果:",b1)
print('乘法结果:',b2)
#print('加法结果:',b3)
#print('减法结果:',b4)
# 结果:
# 除法结果:报错
# 乘法结果:[4, 8, 20, 16, 4, 8, 20, 16]
# 加法结果:报错
# 减法结果:报错# `Python`列表和`NumPy`数组有什么区别?
首先要知道的是矩阵是数组的子类,继承了数组所有的属性和方法,并且矩阵只能是二维的,数组可以是多维的。矩阵和数组主要的差别就体现在运算上。
其次根据官方建议,矩阵的类可能会被删除,现在我们可以使用数组实现所有的操作,数组乘除的运算也有了相应的简单命令。
主要区别总结:
1、矩阵是严格2维的,而数组(ndarrays
)是N维的。
2、生成方式不同:矩阵可以从字符串或列表中生成;数组只能从列表中生成
import numpy as np
a1 = np.mat([[1,2],[3,4]])
a2 = np.mat('1,2;3,4')
print(a1)
# [[1 2]
# [3 4]]
print('\n a2= \n',a2)
# [[1 2]
# [3 4]]
3、数组的主要优点是它们比二维矩阵更通用。许多NumPy
函数返回数组,而不是矩阵。
4、在逐元素运算和线性代数运算之间有明显的区别。
NumPy
矩阵的主要优点是它们为矩阵乘法提供了一种方便的表示法:如果a和b是矩阵,则a*b
它们是矩阵乘积。相反,NumPy
数组始终遵守逐元素的操作规则(除了新增加的@
运算符)。因此,如果a和b是NumPy
数组,则a*b
该数组是通过逐个元素相乘而形成的。要获得和矩阵乘法相同的结果,要使用np.dot()
或者@
(Python 3.5版本以上)
import numpy as np
# 矩阵 #
a = np.mat('4 3; 2 1')
b = np.mat('1 2; 3 4')
print(a)
# [[4 3]
# [2 1]]
print(b)
# [[1 2]
# [3 4]]
print(a*b)
# [[13 20]
# [ 5 8]]
# 数组 #
c = np.array([[4, 3], [2, 1]])
d = np.array([[1, 2], [3, 4]])
print(c*d)
# [[4 6]
# [6 4]]
print(np.dot(c,d))
# [[13 20]
# [ 5 8]]
print(c@d)
# [[13 20]
# [ 5 8]]
5、转置、求逆
矩阵和数组都可以通过.T
方法得到其转置。但是矩阵还可以通过 .H
和.I
分别得到共轭矩阵和逆矩阵。
6、索引不同:矩阵的a[0]
和a[0][0]
返回相同的结果
a = np.mat('4 3; 2 1')
c = np.array([[1, 2], [3, 4]])
print(a)
# [[4 3]
# [2 1]]
print(a[0])
# [[4 3]]
print(a[0][0])
#[[4 3]]
print(c)
# [[1 2]
# [3 4]]
print(c[0])
# [1 2]
print(c[0][0])
# 1
7、更加详细的区别参考:NumPy for Matlab users
1.NumPy: the absolute basics for beginners
2.What are the differences between numpy arrays and matrices? Which one should I use?
3.https://blog.csdn.net/yeler082/article/details/90342438
4.https://blog.csdn.net/xiaobaicai4552/article/details/79413325