-
属性
-
shape:表示数组的各维度大小
-
ndim:表示数据维度
-
dtype:表示数组数据类型的对象
-
-
创建ndarray的方式
方法 用法 解释 array函数 arr = np.array(data)
data为数组 zeros函数 arr = np.zeros(10)
变量为NumPy数组长度 empty函数 np.empty((2, 3, 2))
变量为空数组的各维度大小 arange函数 np.arange(15)
-
ndarray的数据类型
类型 说明 int8, uint8 有符号和无符号的8位整数 int16, uint16 有符号和无符号的16位整数 int32, uint32 有符号和无符号的32位整数 int64, uint64 有符号和无符号的64位整数 float16 半精度浮点数 float32 标准的单精度浮点数 float64 标准的双精度浮点数 float128 扩展精度浮点数 complex64, complex128, complex256 分别用两个32位, 64位或128位浮点数表示的复数 bool 布尔类型 -
NumPy数组运算
示例 说明 arr * arr
元素一一相乘,得到一个数组 arr - arr
元素一一相减,得到一个数组 1/arr
1除以每个元素,得到一个数组 arr ** 0.5
每个元素都开根,得到一个数组 arr2 > arr
每个对应元素一一比较,得到一个布尔型的数组 -
NumPy的函数
-
创建数组
- array函数:
arr = np.array(data)
- zeros函数:
arr = np.zeros(10)
- empty函数:
np.empty((2, 3, 2))
- arange函数:
np.arange(15)
- array函数:
-
数据类型:
- 查看数据类型:dtype:
arr.dtype
- 转换数据类型:astype:
float_arr = arr.astype(np.float64)
- 查看数据类型:dtype:
-
通用函数
- 平方:
np.sqrt(arr)
- 指数:
np.exp(arr)
- 最大值:
np.maximum(x, y)
- 返回整数和小数部分:
remainder, whole_part = np.modf(arr)
- 平方:
-
条件逻辑
- 三元表达式:
result = [(x if c else y) for x, y, c in zip(xarr, yarr, cond)]
:当cond中的值为True时,选取xarr的值,否则从yarr中选取 - 更简洁的三元表达式:
result = np.where(cond, xarr, yarr)
:当cond中的值为True时,选取xarr的值,否则从yarr中选取(cond也可以为表达式:arr > 0
) - 统计True值:
(arr > 0).sum()
- 判断是否存在True值:
bools.any()
- 判断数组中都是True值:
bools.all()
- 三元表达式:
-
统计方法
- 求平均值:
arr.mean()
或np.mean(arr)
- 参数:axis:
arr.mean(axis=1)
:每行的平均值
- 参数:axis:
- 求和:
arr.sum()
- 参数:axis:
arr.sum(axis=0)
:每列的和
- 参数:axis:
- 累加:
arr.cumsum()
- 参数:axis:
arr.cumsum(axis=0)
:每列求累加
- 参数:axis:
- 累乘:
arr.cumprod(axis=1)
- 标准差:
arr.std()
- 方差:
arr.var()
- 最值:
arr.max()
和arr.min()
- 最值的索引:
arr.argmax()
和arr.argmin()
- 求平均值:
-
排序:
arr.sort()
- 参数:按某个维度排序:
arr.sort(1)
- 参数:按某个维度排序:
-
集合逻辑:
- 唯一化:
np.unique(names)
- 交集:
intersect1d(x, y)
- 并集:
union1d(x, y)
- 求x的元素是否包含y:
in1d(x, y)
- 元素在x中且不在y中:
setdiff1d(x, y)
- 存在于一个数组中但不同时存在于两个数组中的元素:
setxor1d(x, y)
- 唯一化:
-
文件操作
- 保存:
np.save('some_array', arr)
:参数(文件名,对象名) - 导入:
np.load('some_array.npy')
- 保存:
-
数组的矩阵操作
-
转置:
arr.T
-
高维数组转置:
arr.transpose((1, 0, 2))
-
计算内积:
np.dot(arr1, arr2)
arr1.dot(arr2)
-
-
伪随机数生成:
- 标准正态分布的随机数组:
np.random.normal(size=(4, 4))
- 更改随机数⽣成种⼦:
np.random.seed(1234)
- 标准正态分布的随机数组:
-
-
切片索引方式
-
切片单个元素或低一维度的数组:
arr[5]
-
切片一段数组:
arr[5:8]
-
切片整个数组:
arr[:]
-
利用切片修改元素值:
arr_slice[:] = 64
-
高维切片:
arr2d[0][2]
等价于arr2d[0, 2]
-
布尔型索引:
data[names == 'Bob']
:找出data中满足条件为真的低维数组-
表示肯定:
data[names == 'Bob']
-
表示否定:
data[~(names == 'Bob')
或data[names != 'Bob']
-
组合多个布尔条件:
mask = (names == 'Bob') | (names == 'Will')
data[mask]
-
布尔型索引结合普通索引:
data[names == 'Bob', 2:]
-
-
花式索引:
-
以特定顺序选取行子集:
arr[[4, 3, 0, 6]]
arr[[-3, -5, -7]]
-
-
NumPy数据操作总结
最新推荐文章于 2022-08-26 10:12:47 发布