NumPy 教程

NumPy 笔记

NumPy 数组对象


Numpy 的核心内容是它的多维数组对象 ndarray(N-Dimensions Array),整个包几乎都是围绕这个对象展开。Numpy 本身并没有提供多么高级的数据结构和分析功能,但它是很多高级工具(如 pandas)构建的基础,在结构和操作上具有统一性,因此理解 Numpy 的数组及面向数组的计算有助于更加高效地使用诸如 pandas 之类的工具。

ndarray 数据结构 

ndarray 对象是用于存放同类型元素的多维数组。

ndarray 中的每个元素在内存中都有相同存储大小的区域。

该对象由两部分组成:

  • 实际的数据
  • 描述这些数据的元数据。

元数据具体由如下几部分组成:

  • 一个指向数据(内存或内存映射文件中的一块数据)的指针(header)。
  • 描述在数组中固定大小的数据类型(dtype)。
  • 描述多维数组各维度大小的元组(shape)。
  • 一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要“跨过”的字节数。

创建多维数组

NumPy 中使用 array 函数创建数组,如下函数:

def array(p_object, dtype=None, copy=True, order='K', subok=False, ndmin=0):

上面的函数接受以下参数:

参数 描述
p_object 任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。
dtype 可选,数组的所需数据类型。
copy 可选,默认为 True,对象是否被复制。
order

可选,{'K', 'A', 'C', 'F'},指定数组的内存布局。

如果指定对象不是数组,则新创建的数组将按 C 顺序排列(行排列),除非指定了 'F',在这种情况下,它将采用 Fortran 顺序(列排列);

subok 可选,默认情况下,返回的数组被强制为基类数组。如果为 True,则返回子类。
ndimin 可选,指定返回数组的最小维数。

示例

创建一维数组

import numpy as np

# 创建一维数组
ndarr = np.array([1, 2, 3])
print(ndarr)

输出如下:

[1, 2, 3]

创建多维数组

import numpy as np

ndarr = np.array([[1, 2], [3, 4]])
print(ndarr)

输出如下:

[[1, 2] 
 [3, 4]]

向基类强转换

import numpy as np

ndarr = np.array([1, 2, 3.0])
print(ndarr)

输出如下:

[1. 2. 3.]

设置最小维度

import numpy as np

ndarr = np.array([1, 2, 3], ndmin=2)
print(ndarr)

输出如下:

[[1 2 3]]

指定数据类型

import numpy as np

ndarr = np.array([1, 2, 3], dtype=complex)
print(ndarr)

输出如下:

[1.+0.j 2.+0.j 3.+0.j]