python数组略记
在Python中存储⼀个整数要⽐在像C这样的编译语⾔中存储⼀个整数要有损耗
要让列表能够容纳不同的类型,每个列表中的元素都必须带有⾃⼰的类型信息、引⽤计数器和其他的信息,⼀句话,⾥⾯的每个元素都是⼀个完整的Python的对象。如果在所有的元素都是同⼀种类型的情况下,这⾥⾯绝⼤部分的信息都是冗余的:如果我们能将数据存储在⼀个固定类型的数组中,显然会更加⾼效。
数组
数组仅仅包含⼀个指针指向⼀块连续的内存空间。⽽Python列表,含有⼀个指针指向⼀块连续的指针内存空间,⾥⾯的每个指针再指向内存中每个独⽴的Python对象,如我们前⾯看到的整数。列表的优势在于灵活:因为每个元素都是完整的Python的类型对象结构,包含了数据和类型信息,因此列表可以存储任何类型的数据。NumPy使⽤的固定类型的数组缺少这种灵活性,但是对于存储和操作数据会⾼效许多。
Python的固定类型数组 array.array('i', List)
np.array()
与Python的列表不同,NumPy数组是固定类型的。这意味着,如果你试图将⼀个浮点数值放⼊⼀个整数型数组,这个值会被默默地截成整数。
当step为负值时,将会在数组⾥反向的取元素,这是将数组反向排序最简单的⽅法
对于⼤数据量的计算,有时指定存储输出数据的数组是很有⽤的。指定输出结果的内存位置能够避免创建临时的数组。所有的ufuncs都能通过指定out 参数来指定输出的数组。
任何情况下,当你操作NumPy数组时,你都应该使⽤NumPy的聚合函数来代替Python的內建函数。