这是本人第一篇博客,目前为大一新生,人工智能专业,希望得到前辈的指导,非常感谢!
本篇总结了一些numpy的基本知识
创建并初始化一个数组:
- np.array([the numbers])
- 基本数组
- ndarray的通用矩阵:
np.zeros(n, m)np.ones(n, m)np.empty(number)
- 一维数组:
np.arange(start, stop)np.linspace(start, stop, count)
- 二维矩阵:
np.eye(n, m) #在i=j处为1,其余为0np.diag(arr, num) #在对角线初始化arr,num扩张np.vander(arr, n,increasing = True) #一个行长len(arr),列长n,的数组。将arr中的元素按列排开,第一列默认为n-1次幂,降幂(升幂)排序
- 随机数数组:
- 随机初始:
- rng = np.random.default_rng(seed)
- rng.random(start, stop)
- 生成随机数整数数组:rng.integers(stop, size = ())
以上都可以在括号内部最后加上dtype参数指定数据类型
- 数组的属性:
数组维度数arr.ndim
数组形状arr.shape
数组元素个数arr.size
数组类型arr.dtype
索引和切片 (index and slice):
- 使用 [] 索引
- 行列索引
arr[:]
arr[:,]
- arr[条件]
- 获取索引 np.nonzero()
数组操作:
-
排序:
np.sort(arr)
除了返回数组已排序副本的 sort 之外,您还可以使用argsort,它是沿指定轴的间接排序,lexsort,它是对多个键的间接稳定排序,searchsorted,它将在已排序数组中查找元素,以及partition,它是一个部分排序。
-
拼接:
np.concatenate((a, b))np.vstack()np.hstack()
-
切割
np.split(arr, n, axis)n如果是整数那会将数组平均切分,如果是列表或数组,则会在划分处切割。axis默认为0,在水平方向切割np.hsplit()np.vsplit()arr.copy() 副本
-
添加与删除
函数 元素及描述 append(arr, value, axis = None) 压入右边或底下 insert(arr, obj, value, axis) obj为索引,如果不指定axis,数组会被展开 delete(arr, obj, axis) 和上面一样 np.unique(arr, return_index = True, return_counts =True) 唯一值,唯一值的第一个索引,唯一值的频率。可传递axis值 -
重塑和转置和展平:
-
重塑:
- 重塑形状:
arr.reshape(number)ornp.reshape(arr,shape = ()ornp.resize(arr, list)这个返回新数组 - 向数组添加轴:
arr[np.newaxis, :]np.expand_dims(arr, axis = )
- 重塑形状:
-
转置:
arr.transpose()arr.T更换轴np.flip(arr,)
可添加axis参数
-
展平:
arr.flatten() 创建展平的副本
arr.ravel() 创建展平的视图
-
-
基本数组操作:
- 形状相同的数组对应元素的四则运算
- 广播:数组与单个数字或低维数组执行操作
1) 两个数组的维度数不同,但小维度数组的尾部形状能和大维度数组的尾部形状匹配
2) 两个数组的某一长度均为1,或其中一个为零
-
聚合操作:
arr.max()
arr.min()
arr.sum()
arr.mean()
np.median()
np.var()方差
arr.std()标准差
np.sum()
np.prod()
np.cumsum()
此外,还可以在括号末尾添加axis参数
numpy IO:
| 函数 | 说明 |
|---|---|
load() save('filename.npy', arr) | 读写文件的主要操作,是以未压缩的二进制格式储存 |
savez(flie, *args, **kwds) | 储存多个数组 |
savetxt() loadtxt() | 纯文本 |


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



