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 |
如果指定对象不是数组,则新创建的数组将按 C 顺序排列(行排列),除非指定了 |
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]