list, array, matrix(列表,数组,矩阵)

本文详细介绍了Python中的list、array和matrix的区别。list是普通列表对象,支持append和extend,不具shape属性;array和matrix属于numpy,不支持append/extend,有shape属性。matrix限制为二维,array可为n维。它们的乘法、数据类型、维度及转换方法各有特点。了解这些有助于更好地利用numpy进行数值计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • list是python中的普通列表对象,而array和matrix是python numpy库中封装的两个对象

List

list可以明显的与array,matrix区别开来。list通过[ ]申明,支持append和expend等方法,没有shape属性。使用如下:

>>> data = []
>>> data.append([1,2])
>>> print(data)

[[1, 2]]

>>> data.extend([1,2])
>>> print(data)

[[1, 2], 1, 2]
#可以看出,append( )和extend( )虽然都是连接list,但是append( )是将[1, 2]整体作为一个对象,添加到list中,而extend是将[1, 2]分别作为1和2两个序列,添加到list中

总结list、array和matrix的区别

  • 属性
    list是Python中的普通列表对象,支持append和attend操作,没有shape属性;array和matrix是numpy数据库中的对象,不支持append和attend操作,具有shape属性。但是matrix只能是二维的,shape只有行和列属性,而array可以是n维的。

  • 存放数据类型
    一个list中可以存放不同类型的数据,如int、float、str,或者布尔型;而array和matrix中只能存放相同类型的数据。

  • 存放数据维度
    array和matrix都有shape属性,但matrix只能是2维的,array可以是n维的。
    即matrix的shape只有行、列属性,就类似线性代数中的矩阵

  • 乘法计算规则
    list不支持乘法操作;array和matrix支持乘法操作。array的就是对应元素相乘,如果行或列数不匹配会自动补全,这就是numpy的”广播”。
    array想要实现矩阵相乘,使用np.dot(array1, array2)
    matrix的
    就是矩阵相乘。
    matrix想要实现对应元素相乘,使用np.multiply(mat1, mat2)

  • 读取元素
    list对象不支持一次性读取一行或一列,只能通过指针进行元素的索引;array和matrix即支持一次性读取一行或一列,也支持通过指针来进行元素的索引。

import numpy as np

# use list
>>> a = [[1,2,3],[5,3,6],[2,4,6]]

# use array: numpy.ndarray is a class, while numpy.array is a function to create a ndarray object.
>>> b = np.array([[1,2,3],[5,3,6],[2,4,6]])

# use matrix
>>> c = np.matrix(a)

# compare different forms
>>> print (a)
>>> print (b)
>>> print (c)

>>> print(type(a))
>>> print(type(b))
>>> print(type(c))

>>> print(a[0])
>>> print(a[:,0])
>>> print(b[:,0])
>>> print(c[:,0])
>>> print(b[2,0])
>>> print(c[2,0])

[[1, 2, 3], [5, 3, 6], [2, 4, 6]]                                                                                                                    

[[1 2 3]                                                                                                                                             
 [5 3 6]                                                                                                                                             
 [2 4 6]]                                                                                                                                            

[[1 2 3]                                                                                                                                             
 [5 3 6]                                                                                                                                             
 [2 4 6]]                                                                                                                                            

<class 'list'>  
<class 'numpy.ndarray'>                                                                                                                              
<class 'numpy.matrixlib.defmatrix.matrix'>                                                                                                           

[1, 2, 3] 
TypeError: list indices must be integers or slices, not tuple                                                                                                                                        
[1 5 2]                                                                                                                                              
[[1]                                                                                                                                                 
 [5]                                                                                                                                                 
 [2]]                                                                                                                                                
2  
2             
  • list、array和matrix之间的转换
    list变成array:np.array(list)
    list变成matrix:np.mat(list)
    array和matrix相互转换:np.asmatrix( )和np.asarray( )
    array变成list:data.tolist( )

  • tensorflow中tf.random_( )生成的随机变量
    shape为一维整数或array(数组)
    tf.shape( )和tf.get_shape( )比较:都可以获取shape,但是tf.shape( )中数据类型可以是tensor,list,array;tf.get_shape( )的数据类型只能为tensor,返回的是一个tuple,可以通过data.get_shape( ) as_list( )得到一个list。
    ————————————————
    版权声明:本文为优快云博主「Liven_Zhu」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.youkuaiyun.com/Liven_Zhu/article/details/80445114

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值