介绍
Numpy是Python中科学计算的基础软件包。它 提供了多维数组,多种派生对象以及用于快速操作数组的函数和API。它包括数学、逻辑、数组形状变换、排序、选择、I/O、离散傅立叶变换、基本线性代数、基本统计运算、随机模拟等。
Numpy的核心是ndarray对象。
它封装了python原生的同数据类型的n维数组,为了保证其性能优良,其中有许多操作都是代码在本地进行编辑后执行的。
Numpy数组与标准的python-array之间的区别:
-
numpy数组在创建时候即具有固定的大小,更改ndarray的大小将创建一个新的数组并删除原来的数组;而python-array的原生数组对象可动态增长;
-
ndarray的元素需要是相同的数据类型,因此在内存中的大小相同。(有例外:Python的原生数组里包含了NumPy的对象的时候,这种情况下就允许不同大小元素的数组);
-
NumPy数组有助于对大量数据进行高级数学和其他类型的操作。 通常,这些操作的执行效率更高,比使用Python原生数组的代码更少。
基础知识
Numpy的主要对象是同类型的多数组。
特点
- 元素的类型相同
- 维度称为轴,轴的数目为rank
1
2
3
# 2个轴,第一个轴的长度为2,第二轴的长度为3
[[ 1., 0., 0.],
[ 0., 1., 2.]]
ndarray.ndim
:数组的轴(维度)个数,在Python世界中,维度的数量被称为rankndarray.shape
:数组的维度。返回值是一个整数的元组。n行m列,(n,m)
ndarray.size
: 数组元素的总和,等于shape的元素的乘积ndarray.dtype
: 返回元素类型。例如numpy.int32,numpy.int16,numpy.float64ndarray.itemsize
:数组中每个元素的字节大小。元素为float64
类型的数组的itemsize
为8(=64/8)
,而complex32
类型的数组的itemsize
为4(=32/8)
。它等于ndarray.dtype.itemsize
ndarray.data
:该缓冲区包含数组的实际元素。
数组的创建
np.array([2,3,4])
np.array([[1,3,45]],dtype=float64)
几个函数
zeros
:创建由0构建的数组,例如np.zeros((3,4))
ones
:创建由1构建的数组,例如np.ones((1,2,3),dtype=np.int16)
empty
:创建的内容是随机的并取决于存储器的状态。默认情况下创建的dtype是float64arange
:三个参数,前闭后开,第三个步长,默认步长为1.linspace
:当arange
与浮点参数一起使用时,由于浮点数的精度是有限的,通常不可能预测获得的元素数量。出于这个原因,通常最好使用函数linspace
,它接收我们想要的元素数量而不是步长作为参数
其他
array, zeros, zeros_like, ones, ones_like, empty, empty_like, arange, linspace, numpy.random.rand, numpy.random.randn, fromfunction, fromfile
运算
数组上的算术运算符使用元素级别。一个新的数组被创建并填充结果。
1
2
3
a = np.array([1,2,3,4])
b = np.arange(4)
print(a-b)//[1 1 1 1]