记录一下python的数据结构 - array

记录一下python的数据结构 - array

标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针。这样为了保存一个简单的[1,2,3],需要有3个指针和三个整数对象。对于数值运算来说这种结构显然比较浪费内存和CPU计算时间。

此外Python还提供了一个array模块,array对象和列表不同,它直接保存数值,和C语言的一维数组比较类似。但是由于它不支持多维,也没有各种运算函数,因此也不适合做数值运算。

NumPy的诞生弥补了这些不足,NumPy提供了两种基本的对象:ndarray(N-dimensional array object)和 ufunc(universal function object)。ndarray(下文统一称之为数组)是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数。

所以使用前,需要`import numpy as np`

\>>> a = np.array([1,2,3,4])
\>>> b = np.array([[1,2,3][4,5,6]])

\#上面例子中的参数序列的元素都是整数,因此所创建的数组的元素类型也是整数,并且是32bit的长整型。
\#可以通过dtype参数在创建时指定元素类型:

\>>> np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]], dtype=np.float) 

= array([[  1.,   2.,   3.,   4.],
   [  4.,   5.,   6.,   7.],
   [  7.,   8.,   9.,  10.]])

\>>> np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]], dtype=np.complex) 

= array([[  1.+0.j,   2.+0.j,   3.+0.j,   4.+0.j],
   [  4.+0.j,   5.+0.j,   6.+0.j,   7.+0.j],
   [  7.+0.j,   8.+0.j,   9.+0.j,  10.+0.j]])


\>>> a.shape
= (4,) 

\>>> b.shape
= (2,3)

\>>> b.shape = 3,2 # 对b进行调整
\>>> b
= ([[1,2][3,4][5,6]])

\>>> b.shape = 2,-1
\>>> b
= ([[1,2,3][4,5,6]])

\>>> d = a.reshape((2,2)) #创建1个改变了尺寸的新数组,且a和d共享内存,改变其中一个元素,会同时修改另一个

 \>>> a = np.arange(10)
 \>>> a
 = [0,1..,8,9] 

\>>> np.arange(0,1,0.1) #arange函数类似于range函数,通过指定开始值、终值和步长来创建一维数组,当然也是不包括终值的
= array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9])

\>>> np.arange(0, 60, 10).reshape(-1, 1) + np.arange(0, 6)
= array([[ 0,  1,  2,  3,  4,  5],
   [10, 11, 12, 13, 14, 15],
   [20, 21, 22, 23, 24, 25],
   [30, 31, 32, 33, 34, 35],
   [40, 41, 42, 43, 44, 45],
   [50, 51, 52, 53, 54, 55]])

\>>> a[5] #用整数做下标
\>>> a[3:5] #用范围做下标获取数组切片,包括a[3]但不包括a[5]
= array([3,4])

\>>> a[:5]
array([0,1,2,3,4])

\>>> a[:-1] #用法同list

\>>> a[2:4] = 100,101 # 索引修改值

\>>> a[1:-1:2] #第三个参数表示步长
= array([1, 3, 5, 7])

\>>> a[::-1] #数组头尾颠倒,省略范围的开始和结束
= array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])

\>>> a[5:1:-2] #步长为负,则起始点要大于结束点
= array([5, 3])

\>>> b = a[3:7] #通过索引产生的新数组b,和a共享数据空间

本篇博客主要参考自
《用python做科学计算》
《Python自学笔记之基础内容回顾》
《Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结 》
《 Python list 操作》
《列表(list), 元祖(tuple), 字典(dict), 字符串(string), 集合(set) 的基本方法 》
《python 2.7教程 - 廖雪峰》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值