深入探索NumPy:高级数组操作与广播机制
1. 数组步长与数据类型层次结构
数组步长是一组整数,它指明了在某个维度上移动一个元素所需“跨越”的字节数。例如,一个10×5的数组,其形状为 (10, 5) :
import numpy as np
print(np.ones((10, 5)).shape) # 输出: (10, 5)
一个典型的(C顺序)3×4×5的float64(8字节)数组,其步长为 (160, 40, 8) :
print(np.ones((3, 4, 5), dtype=np.float64).strides) # 输出: (160, 40, 8)
虽然普通NumPy用户可能对数组步长不太感兴趣,但在构建“零拷贝”数组视图时,步长是必需的。步长甚至可以为负,这使得数组能够在内存中“反向”移动,比如 obj[::-1] 或 obj[:, ::-1] 这样的切片操作。
在NumPy中,数据类型有层次结构。有时候我们需要检查数组中包含的是整数、浮点数、字符串还是Python对象。由于浮点数有多种类型(从float16到float128),逐个检查数据类型会很繁琐。幸运的是,数据类型有超类,如 np.integer 和 np.floating ,可以与 n
超级会员免费看
订阅专栏 解锁全文
104

被折叠的 条评论
为什么被折叠?



