numpy的核心数据结构是它的多维数组对象 numpy.ndarray
.
使用 ndarray
表示多维数据结构时, 从左到右的数组对应由表及里的维度, 或称为轴.
1 | foo = np.array([ |
dtype表示ndarray中每个元素的数据类型, 这里是 complex128, 使用16个字节表示.
shape 表示每个维度的size, 这里结果是 (3,3)
strides 表示在某一个维度下获取到下一个元素所需要跨过的字节数, 在轴0跨越一个元素包括3个complex128的数, 所以是 3*16=48, 在轴1 跨过一个元素相当于 1 个 complex128, 所以是16. 故结果tuple为 (48, 16)
事实上, 单个元素所需字节数 size
, 形状元组 shape
和跨度元组 strides
三者之间有如下关系
1 | strides = tuple(shape[1:]*size, size) |
明白了原理之后, 下面布置一道练习题:
练习题 Py1
将多元数组 A 转化为 \(2 \times 2 \times 2 \times 3\) 的分块矩阵.
1 | A = np.array([ |
1 | >>>print(B) |
评论
shortname
for Disqus. Please set it in_config.yml
.