电脑环境

电脑环境:Windows 10 教育版

Python:python3.6

概述

python中的list是python的内置数据类型,list中的数据类不必相同的,而array的中的类型必须全部相同。在list中的数据类型保存的是数据的存放的地址,简单的说就是指针,并非数据,这样保存一个list就太麻烦了,例如list1=[1,2,3,’a’]需要4个指针和四个数据,增加了存储和消耗cpu。

numpy中封装的array有很强大的功能,里面存放的都是相同的数据类型

list1=[1,2,3,'a']
print list1  a=np.array([1,2,3,4,5])
b=np.array([[1,2,3],[4,5,6]])
c=list(a)   # array到list的转换
print (a,np.shape(a))
print (b,np.shape(b))
print (c,np.shape(c))

运行结果:

[1, 2, 3, 'a'] # 元素数据类型不同,并且用逗号隔开
[1 2 3 4 5] (5L,) # 一维数组,类型用tuple表示
[[1 2 3]  [4 5 6]] (2L, 3L)
[1, 2, 3, 4, 5] (5L,) 

创建:

1、 array的创建:参数既可以是list,也可以是元组.使用对应的属性shape直接得到形状

a=np.array((1,2,3,4,5))# 参数是元组
b=np.array([6,7,8,9,0])# 参数是list
c=np.array([[1,2,3],[4,5,6]])# 参数二维数组
print(a,b,c.shape) 

结果:

[1 2 3 4 5] [6 7 8 9 0] (2, 3)

2、直接改变属性array的形状,-1代表的是自己推算。这里并不是T, reshape(())也可以

c = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]])
c.shape # (3L, 4L)
c.shape=4,-1   #c.reshape((4,-1))
print(c)   

结果:

[[ 1  2  3][ 4  4  5][ 6  7  7][ 8  9 10]]  

这里的reshape最终相当于是一个浅拷贝,也就是说还是和原来的c使用相同的内存空间

c = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]])
c.shape # (3L, 4L)
d=c.reshape((4,-1))
d[2:4]=100
print(d) 

结果:

[[  1   2   3][  4   4   5][100 100 100][100 100 100]]

3、直接创建一个array。前面在创建的时候我们都是使用的np.array()方法从tuple或者list转换成为array,感觉很是费劲,numpy自己提供了很多的方法让我们自己直接创建一个array.

arr1=np.arange(1,10,1) #
arr2=np.linspace(1,10,10)
print (arr1,arr1.dtype)
print (arr2,arr2.dtype)

结果:

[1 2 3 4 5 6 7 8 9] int32
[ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10.] float64

np.arange(a,b,c)表示产生从a-b不包括b,间隔为c的一个array,数据类型默认是int32。但是linspace(a,b,c)表示的是把a-b平均分成c分,它包括b。

4、有时候我们需要对于每一个元素的坐标进行赋予不同的数值,可以使用fromfunction函数。

def fun(i):  return i%4+2
a = np.fromfunction(fun,(10,))
print(a)

结果:

[2. 3. 4. 5. 2. 3. 4. 5. 2. 3.]

fromfunction必须支持多维数组,所以他的第二个参数必须是一个tuple,只能是(10,),(10)是错误的。

def fun2(i,j):  return (i+1)*(j+1)
a = np.fromfunction(fun2,(9,9))
print(a)

结果:

[[ 1.  2.  3.  4.  5.  6.  7.  8.  9.][ 2.  4.  6.  8. 10. 12. 14. 16. 18.][ 3.  6.  9. 12. 15. 18. 21. 24. 27.][ 4.  8. 12. 16. 20. 24. 28. 32. 36.][ 5. 10. 15. 20. 25. 30. 35. 40. 45.][ 6. 12. 18. 24. 30. 36. 42. 48. 54.][ 7. 14. 21. 28. 35. 42. 49. 56. 63.][ 8. 16. 24. 32. 40. 48. 56. 64. 72.][ 9. 18. 27. 36. 45. 54. 63. 72. 81.]]

虽然说,这里提供了很多的直接产生array的方式,但是大部分情况我们都是会从list进行转换,因为在实际的处理中,我们需要从txt加载文件,那样直接读入的数据显示存放到list中,需要处理的时候我们转换到array,因为array的设计更加符合我们的使用。
5、涉及到矩阵的运算再使用mat,那么list主要就是用进行元素的索取。

def loaddataSet(fileName):    file=open(fileName)    dataMat=[]  for line in file.readlines():    curLine=line.strip().split('\t')    floatLine=map(float,curLine)#这里使用的是map函数直接把数据转化成为float类型    dataMat.append(floatLine)    return dataMat 

上面的函数返回最终的数据就是最初的list数据集,再根据不同的处理需求是转化到array还是mat。其实array是mat的父类,能用mat的地方,array理论上都能传入。

python中的list和array的区别及相互转化相关推荐

  1. python中dtype什么意思_浅谈python 中的 type(), dtype(), astype()的区别

    如下所示: 函数 说明 type() 返回数据结构类型(list.dict.numpy.ndarray 等) dtype() 返回数据元素的数据类型(int.float等) 备注:1)由于 list. ...

  2. python中的list和array的不同之处

    python中的list和array的不同之处 python中的list是python的内置数据类型,list中的数据类不必相同的,而array的中的类型必须全部相同.在list中的数据类型保存的是数 ...

  3. python dtype什么意思_浅谈python 中的 type(), dtype(), astype()的区别

    如下所示: 函数 说明 type() 返回数据结构类型(list.dict.numpy.ndarray 等) dtype() 返回数据元素的数据类型(int.float等) 备注:1)由于 list. ...

  4. python中astype用法_浅谈python 中的 type(), dtype(), astype()的区别

    如下所示: 函数 说明 type() 返回数据结构类型(list.dict.numpy.ndarray 等) dtype() 返回数据元素的数据类型(int.float等) 备注:1)由于 list. ...

  5. Python中爬虫框架或模块的区别

    Python中爬虫框架或模块的区别,我们在Python的学习过程中,需要不断的总结知识点,这样我们才能进步的更快一些. (1)爬虫框架或模块 Python自带爬虫模块:urllib.urllib2; ...

  6. Python中值传递和引用传递区别

    原文:http://blog.csdn.net/xuqiaobo/article/details/72236539 举例,函数参数如果是dic,都不需要返回值,原值就被改变了 def aa(dic): ...

  7. Python中str()与repr()函数的区别——repr() 的输出追求明确性,除了对象内容,还需要展示出对象的数据类型信息,适合开发和调试阶段使用...

    Python中str()与repr()函数的区别 from:https://www.jianshu.com/p/2a41315ca47e 在 Python 中要将某一类型的变量或者常量转换为字符串对象 ...

  8. python中列表 元组 字典 集合的区别

    参考文章:python中列表 元组 字典 集合的区别

  9. Python中爬虫框架或模块的区别!

    Python中爬虫框架或模块的区别,我们在Python的学习过程中,需要不断的总结知识点,这样我们才能进步的更快一些. (1)爬虫框架或模块 Python自带爬虫模块:urllib.urllib2; ...

最新文章

  1. 职场中如何与别人高效沟通?
  2. java 根据详细地址提取小区_Java分析/测试工具EJ Technologies JProfiler介绍及安装教程...
  3. 我和学员那些事儿——涅槃重生的背后
  4. FreeRTOS系列第1篇---为什么选择FreeRTOS?
  5. 【Linux】一步一步学Linux——cal命令(75)
  6. 软考笔记(数据结构篇)———— KMP算法
  7. windowsGHO镜像系统winXPwin7win8win10下载
  8. ARINC 429 过滤介绍
  9. 海思HI3559和海思HI3559A的区别以及Hi3559c开发板
  10. 秃头不用怕!程序员脱发自救指南来了
  11. 归纳遇到的一些参考文献的格式问题
  12. 魔窗mLink发布2019收费标准,20W年费是物有所值?还是重度收费?
  13. 已知两个向量的夹角和其中一个向量,求另一个向量
  14. 2016计算机2级试题,2016年计算机二级考试题及答案
  15. Unite Beijing 2018 | 技术专场部分精彩议题曝光
  16. Python系列 49 内置模块:subprocess
  17. Codeforces div2 D. Madoka and The Corruption Scheme
  18. magento -- 新会员首次购物免运费的实现思路
  19. 计算机绘图说课视频,说课稿认识画图软件
  20. IAP程序在内测期间的各种问题

热门文章

  1. Spartan-6的SelectIO资源
  2. MongoDB sharding迁移那些事(一)
  3. oracle之数据同步:Oracle Sql Loader使用说明(大批量快速插入数据库记录)
  4. 手把手教你搭建微信点餐系统环境(springmvc+ibatis+maven+git)
  5. MySQL密码设置和重置,以及远程登入数据库
  6. Java中JDK,JRE和JVM之间的关系
  7. 工作那些事儿(12)- 缓存
  8. WP7基础---补充
  9. DNS 学习笔记之6- DNS区域的管理②
  10. 虚方法、重写方法和抽象方法[转载]