Python中的NumPy数组
Python列表是数组的替代品,但是在计算大量数字数据集时,它们无法提供所需的性能。为了解决这个问题,我们使用了一个叫做NumPy的python库。NumPy这个词代表了Numerical Python。NumPy提供了一个叫做ndarray的数组对象。它们与标准的Python序列相似,但在某些关键因素上有所不同。
NumPy数组与内置的Python序列的对比。
- 与列表不同,NumPy数组的大小是固定的,改变一个数组的大小将导致创建一个新的数组,而原来的数组将被删除。
- 一个数组中的所有元素都是同一类型。
- Numpy数组比标准的Python序列更快、更有效、需要的语法更少。
注意:各种基于Python的科学和数学软件包都使用Numpy。它们可能将输入作为一个内置的Python序列,但它们很可能将数据转换为NumPy数组,以达到更快的处理。这说明需要了解NumPy。
为什么Numpy这么快
Numpy数组主要用C语言编写。由于是用C语言编写的,NumPy数组被存储在连续的内存位置,这使得它们更容易被访问和操作。这意味着你可以用编写Python程序的方式获得C语言代码的性能水平。
使用Numpy数组
如果你的系统中没有安装NumPy,你可以通过以下步骤进行安装。安装NumPy后,你可以像这样在你的程序中导入它
import numpy as np
这里np是NumPy的一个常用别名。
列表中的Numpy数组
你可以使用np别名,用array()方法创建一个列表的ndarray。
li = [1,2,3,4]
numpyArr = np.array(li)
或者
numpyArr = np.array([1,2,3,4])
该列表被传递给array()方法,然后返回一个具有相同元素的NumPy数组。
示例:
下面的例子显示了如何从一个列表中初始化一个NumPy数组。
import numpy as np
li = [1, 2, 3, 4]
numpyArr = np.array(li)
print(numpyArr)
输出:
[1 2 3 4]
产生的数组看起来和列表一样,但实际上是一个NumPy对象。
示例:让我们举个例子来检查numpyArr是否是NumPy对象。
import numpy as np
li = [1, 2, 3, 4]
numpyArr = np.array(li)
print("li =", li, "and type(li) =", type(li))
print("numpyArr =", numpyArr, "and type(numpyArr) =", type(numpyArr))
输出:
li = [1, 2, 3, 4] and type(li) = <class 'list'>
numpyArr = [1 2 3 4] and type(numpyArr) = <class 'numpy.ndarray'>
你可以看到li是一个列表对象,而numpyArr是NumPy的一个数组对象。
NumPy数组来自一个元组。
你可以用类似的语法从一个元组中制作ndarray。
tup = (1,2,3,4)
numpyArr = np.array(tup)
或者
numpyArr = np.array((1,2,3,4))
示例:
下面的例子说明了如何从一个元组创建一个NumPy数组。
import numpy as np
tup = (1, 2, 3, 4)
numpyArr = np.array(tup)
print("tup =", tup, "and type(tup) =", type(tup))
print("numpyArr =", numpyArr, "and type(numpyArr) =", type(numpyArr))
输出:
tup = (1, 2, 3, 4) and type(tup) = <class 'tuple'>
numpyArr = [1 2 3 4] and type(numpyArr) = <class 'numpy.ndarray'>
注意,numpyArr的值在两种转换中的任何一种都保持不变。