Python中的二维数组(list与numpy.array)

Python中List与Numpy.Array的区别
本文通过实例对比了Python中List与Numpy.Array的不同之处,重点介绍了它们在索引方式上的差异,并探讨了两者在内存使用及操作效率方面的区别。

出处:https://hsh.blog.ustc.edu.cn/2015/04/24/238/

关于python中的二维数组,主要有list和numpy.array两种。上次课间阿C问我两者的区别,但是说实话,我在python方面也仅是入门,只会修改已有的代码和写一些基础的代码。关于这些细节其实也不是很清楚。这两天刚好也遇见了类似的问题,所以趁着跑程序的空总结一下。

 

其实在python下运行几个示例就可以看出两者的区别(这也是是我写python程序的常态>_<

In [2]:
a = [[1, 2 , 3],
     [4, 5, 6]]
import numpy as np
b = np.array(a)
print type(a)
print a
print type(b)
print b
<type 'list'>
[[1, 2, 3], [4, 5, 6]]
<type 'numpy.ndarray'>
[[1 2 3]
 [4 5 6]]

In [4]:
print a[1][2]
print a[1][:]
6
[4, 5, 6]

补充:print a[:][1]
[4, 5, 6]   为什么答案跟a[1][:]一样,之前一直不解?以为答案会是[2,5]
其实[:]代表取所有,相当于复制整个list,a[:][1]表示先复制整个list之后取第二个元素,也就是[4,5,6]; a[1][:]表示先取第二个元素然后复制第二个元素。
为了验证 取
a[:][1][2],  答案果然是6.
In [5]:
print a[1,2]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-9da16148905d> in <module>()
----> 1 print a[1,2]

TypeError: list indices must be integers, not tuple
In [6]:
print a[1, :]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-6-f921c5f2e22f> in <module>()
----> 1 print a[1, :]

TypeError: list indices must be integers, not tuple
In [7]:
print b[1][2]
print b[1][:]
print b[1, 2]
print b[1, :]
6
[4 5 6]
6
[4 5 6]

由上面的简单对比可以看出, numpy.array支持比list更多的索引方式,这也是我们最经常遇到的关于两者的区别。此外从[Numpy-快速处理数据]上可以了解到“由于list的元素可以是任何对象,因此列表中所保存的是对象的指针。这样为了保存一个简单的[1,2,3],有3个指针和3个整数对象。”

此外可以通过dir(a)和dir(b)分别查看两者更详细的属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值