Python基础:Python列表与NumPy数组和矩阵的异同

list:列表

array:数组

ndarray:n维的array

matrix:矩阵

1 Python列表和NumPy数组有什么区别?

为什么要使用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`数组有什么区别?

2 NumPy数组和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

3 参考链接

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

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值