Numpy常用函数总结

Numpy常用函数与知识点总结

Numpy数组初始化

import numpy as np # 引入库 
array = np.array([[1,2,3],[2,3,4]], dtype=np.int64) # 初始化矩阵 
np.empty((2,3)) # 初始化为接近于0的2*3矩阵 
np.arange(12) # 初始化0-11的矩阵 
np.arrange(12).reshape((3,4)) # 初始化后调整shape为3*4 
np.linspace(1,10,16).reshape((3,4)) # 初始化1-10范围内16个等距点 
np.random.random((2,3)) # 初始化随机的2*3矩阵

Numpy数组性质

函数说明输出
array1.dot(array2)矩阵点乘
array1*array2矩阵叉乘
array*n矩阵乘常数常数与矩阵每个元素相乘
array.T矩阵转置
array.ndim维度2
array.shape形状(2, 3)
array.size元素数量6
array.dtype元素的类型int64

Numpy数组运算

函数说明
np.sum(array, axis=1)0:按列跨行; 1:按行跨列
np.min(array)最小值
np.max(array)最大值
np.argmin(array)最小值索引
np.argmax(array)最大值索引
np.mean(array)平均值
np.average(array)平均值
np.median(array)中位数
np.cumsum(array)累加
np.diff(array)相邻两数相减
np.nonzero(array)非零值的行数和列数
np.sort(array)每行单独排序
np.transpose(array)对称矩阵,等价于array.T
np.clip(array, m ,n)所有小于n的数修改为n,所有大于m的数修改为m;可用来修正sigmoid函数输出,防止过拟合

Numpy数组合并分割与复制

np.vstack(array1, array2) # vertical stack垂直合并 
np.hstack(array1, array2) # horizontal stack横向合并 # 注意一个一维矩阵,不能通过转置将横向数列转变为纵向数列 
array[np.newaxis,:] # 在行上加一个维度 array[:,np.newaxis] # 在列上加一个维度,可实现横向变纵向 
np.concatenate((array1, array2, array3, array4), axis=1) # 多个数组合并; 0:跨行合并; 1:跨列合并 
np.split(array, 2, axis=0) # 平均分割; axis=0:跨行分割; axis=1:跨列分割 
np.array_split(array, 3, axis=0) # 不均等分割 
np.vsplit(array, 3) # 纵向分割, 跨行分割, axis=0 
np.hsplit(array, 2) # 横向分割, 跨列分割, axis=1 
array1 = array # id相同 
array2 = array.copy() # 深层复制, id不同

代码技巧

array[array==5]=0 # array中所有值等于5的元素修改为0 
for row in array:
    print(row) # 输出行 
for column in array.T:
    print(column) # 输出列,通过转置 
for item in array.flat:
    print(item) # 输出每个元素,通过压缩为一维矩阵
array1 = np.zeros((200, 200), order='C') #C-type 
array2 = np.zeros((200, 200), order='F') #Fortran 
np.concatenate((a, b), axis=0) #axis=0合并,跨行合并,C更快 
np.concatenate((a, b), axis=0) #axis=1合并,跨列合并,F更快

array.flatten() # 压缩为一维矩阵 
array.ravel() # 压缩为一维矩阵,速度比flatten快,ravel()是view而非flatten的copy
# ---------view--------
a_view1 = a[1:2, 3:6]    # 切片 slice 
a_view2 = a[:100]        # 同上 
a_view3 = a[::2]         # 跳步 
a_view4 = a.ravel()      # 上面提到了 
# ---------copy--------
a_copy1 = a[[1,4,6], [2,4,6]]   # 用 index 选 
a_copy2 = a[[True, True], [False, True]]  # 用 mask 
a_copy3 = a[[1,2], :]        # 虽然 1,2 的确连在一起了, 但是他们确实是 copy 
a_copy4 = a[a[1,:] != 0, :]  # fancy indexing 
a_copy5 = a[np.isnan(a), :]  # fancy indexing 
# ---------建议--------# 
1.使用 np.take() , 替代用 index 选数据的方法. 
np.take(array_all, array_indices, axis=0) 
# 从array_all中取出array_indices指向的数据 
# 2.使用 np.compress(), 替代用 mask 选数据的方法. 
np.compress(mask, a, axis=0) # 用True和False取出数据 
a = a + 1         # 0.035230 
a = np.add(a, 1)  # 0.032738 
# 上面两个功能相同, 是copy格式, 但存在时间差 
a += 1                 # 0.011219 
np.add(a, 1, out=a)    # 0.008843 
# 上面两个功能相同, 是view格式, 但存在时间差

Reference

https://mofanpy.com/tutorials/data-manipulation/np-pd/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值