Python/Numpy之矩阵/数组/列表转换

Python/Numpy之矩阵与数组列表转换

numpy矩阵数组、列表相比较

  1. 对比“矩阵数组”与“列表”,“矩阵数组”一般指基于numpy的,由于numpy对其专门优化,因此速度很快,“列表”数python 内置的数据类型,通过嵌套也可以存储多维数据。
  2. 数组中对元素的数据类型有同一性要求,列表则相对宽松
  3. numpy的矩阵matrix是数组array的分支,matrix的优势是对于矩阵操作相对简单a * b即矩阵乘法计算,对应数组则需np.dot(a,b),除此之外还有一系列的矩阵操作,如转置、共轭等。
  4. matrix是二维的,array是多维的。

1.列表⇋ 数组⇋ 矩阵

import numpy as np
注:查看数据data的类型type(data)

(1)列表→ \rightarrow 数组, 矩阵

使用np.array(list)、np.mat(list)方式转化,二者的转化结果略有差异,见示例

  1. 列表转化为数组:array = np.array(list)
  2. 列表转化为矩阵:matrix = np.mat(list)

(2)列表← \leftarrow 数组, 矩阵

使用tolist()

  1. 数组转化为列表:list = array.tolist()
  2. 矩阵转化为列表:list = matrix.tolist()

(3)numpy矩阵⇋数组之间转换

  1. 矩阵转换为数组:array = np.array(matrix)
  2. 数组转换为矩阵:matrix = np.mat(array)

2.举例如下

(1)列表→ \rightarrow 数组, 矩阵

>>> a = [1,2,3]
>>> a
[1, 2, 3]
>>> type(a)
<class 'list'>
>>> b = np.array(a)
>>> b
array([1, 2, 3])
>>> type(b)
<class 'numpy.ndarray'>
>>> c = np.mat(a)
>>> c
matrix([[1, 2, 3]])
>>> type(c)
<class 'numpy.matrix'>

(2)列表← \leftarrow 数组, 矩阵

>>> b
array([1, 2, 3])
>>> c
matrix([[1, 2, 3]])
>>> c
matrix([[1, 2, 3]])
# 矩阵转列表
# 由于矩阵是二维的,因此转化的列表是嵌套的,如果想一维的转化,可以将矩阵先转化为数组再转化为列表
>>> a1 = c.tolist()
>>> a1
[[1, 2, 3]]
# 数组转列表
>>> a2 = b.tolist()
>>> a2
[1, 2, 3]

(3)numpy矩阵⇋数组之间转换

>>> b
array([1, 2, 3])
>>> c
matrix([[1, 2, 3]])
>>> array2matrix = np.mat(b)
>>> array2matrix
matrix([[1, 2, 3]])
>>> type(array2matrix)
<class 'numpy.matrix'>
>>> matrix2array = np.array(c)
>>> matrix2array
array([[1, 2, 3]])
>>> type(matrix2array)
<class 'numpy.ndarray'>

更多Python数据科学相关见专题Python数据科学技能索引
参考:Python列表、numpy数组和矩阵


版权声明:本文为qq_34159047原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。