Numpy学习笔记

Numpy

ndarray对象

包含相同类型数据的数组
img

主要属性:

size: 数组中元素的总个数
dtype: 数组数据类型
shape: 数组形状,各维度大小,元组
ndim: 数组维数

创建方法:

array:
asarray:
zeros,ones,eyes,empty: 0,1,对角1,不初始
arange: (start,stop,step,dtype),不包含stop
linspace: (start,stop,num=50,endpoint=True)
logspace: (start,stop,num=50,endpoint=True,base=10)

广播机制:

不同形状数组运算时启用广播机制,规则如下:

  • 比较数组维度,维度小的在前面补1对齐维度,如(4,3)+(3,),补齐为(1,3)
  • 比较各维度,若数组维度相等或者有一个数组维度为1,可以运算,维度为1时会复制第一组值扩充至对应维度

数组操作

  • reshape

: np.reshape(arr,newshape,order)
这里的order指的是数据的排列顺序,一般是按’C’即行排列,也可以指定按’F’排列

import numpy as np

a = np.arange(1, 10, 1).reshape((3, -1))
b = np.arange(1, 10, 1).reshape((3, -1), order='C')
c = np.arange(1, 10, 1).reshape((3, -1), order='F')
print(a, '\n\n', b, '\n\n', c)
#    [[1 2 3]
#     [4 5 6]
#     [7 8 9]] 
#    
#     [[1 2 3]
#     [4 5 6]
#     [7 8 9]] 
#    
#     [[1 4 7]
#     [2 5 8]
#     [3 6 9]]
  • ravel :

ravel(arr,order),按指定顺序展平数组,(不太懂有啥用)

  • transpose,T :

倒置数组,同样可以输入order参数

  • expand_dims :

扩充数组,加入新的轴,newaxis更简洁

import numpy as np

a = np.array([1, 2, 3])
b = np.expand_dims(a, axis=0)
c = a[np.newaxis, :]
d = np.expand_dims(a, axis=1)
e = a[:,np.newaxis]
print(a.shape, b.shape, c.shape, d.shape, e.shape)
#  (3,) (1, 3) (1, 3) (3, 1) (3, 1)
  • squeeze :

删除数组中维度为1的维度

import numpy as np

a = np.array([1, 2, 3])
b = np.expand_dims(a, axis=0)
c = a[np.newaxis, :, np.newaxis]
d = b.squeeze()
e = c.squeeze()
print(a.shape, b.shape, c.shape, d.shape, e.shape)
#  (3,) (1, 3) (1, 3, 1) (3,) (3,)
  • vstack,hstack :

垂直、水平连接数组

import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
c = np.vstack((a, b))
d = np.hstack((a, b))
print(c, '\n', d)
#    [[1 2]
#     [3 4]
#     [5 6]
#     [7 8]] 
#     [[1 2 5 6]
#      [3 4 7 8]]
  • append :

只能通过np.append(arr, values, axis)调用,大小必须相同,不指定axis返回一维数组

import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
print(np.append(a, b))
print(np.append(a, b, axis=0))
print(np.append(a, b, axis=1))
#    [1 2 3 4 5 6 7 8]
#
#    [[1 2]
#     [3 4]
#     [5 6]
#     [7 8]]
#
#    [[1 2 5 6]
#     [3 4 7 8]]
  • around :

np.around(arr,decimals) arr:数组 decimals:小数位数

  • ceil,floor :

ceil:向上取整,floor:向下取整

数组排序及筛选

  • sort

np.sort(arr,axis,kind,order),kind是排序方法,默认‘quicksort’,还有‘mergesort’、‘heapsort’。不指定axis会按照最后一个维度排序

  • argsort

形式跟sort没有较大差别,返回的是排序后的元素索引

import numpy as np

a = np.arange(10, 0, -1)
print(a)
print(np.sort(a))
print(np.argsort(a))
#    [10  9  8  7  6  5  4  3  2  1]
#    [ 1  2  3  4  5  6  7  8  9 10]
#    [9 8 7 6 5 4 3 2 1 0]
  • where

np.where(condition)——返回满足条件的元素索引

  • extract

np.extract(condition,x)——返回满足要求的元素

矩阵代数

Numpy中还有矩阵对象,矩阵库为numpy.matlib,可用此库创建矩阵,也可以用np.mat(arr)创建矩阵
Numpy中矩阵运算库linalg,包含线性代数许多函数,需要时可查相关文档

  • dot :

点乘,同.*,对于数组而言跟matlab里运算类似

import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
print(a * b)
print(np.dot(a, b))
print(np.matmul(a, b))
a = np.mat(a)
b = np.mat(b)
print(a * b)
print(np.dot(a, b))
print(np.matmul(a, b))
#    [[ 5 12]
#     [21 32]] 
#    
#    [[19 22]
#     [43 50]] 
#    
#    [[19 22]
#     [43 50]] 
#    
#    [[19 22]
#     [43 50]] 
#    
#    [[19 22]
#     [43 50]] 
#    
#    [[19 22]
#     [43 50]] 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【为什么要学习NumpyNumPyPython语言的一个扩展程序库。支持多维数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy是人工智能、数据分析从业者必备的知识和技能,也是学习后续Python扩展库(Matplotlib, SciPy, Pandas, Seaborn, Scikit-image等)的基础。【推荐你学习这门课的理由】(1)图文并茂:课程采用Jupyter Notebook讲解,图文并茂,讲述与Numpy代码对应。其文件将分享给学员,可作为交互式电子书使用。(2)案例丰富: 每个知识点均有Numpy代码示例说明;难点使用图解说明和讲述。另提供Numpy项目实战案例-鸢尾花数据集上的数据分析与计算。(3)内容全面系统:涵盖了Numpy的基础用法和高级用法,包括:ndarray、创建数组、复制数组、数组访问、数组运算、数组操作、迭代数组、maskedarray、结构化数组、通用函数、数学函数、统计函数、排序函数、条件查找、随机数、字节交换、线性代数、数据文件读写等。   玩转是一种境界,显示了对该领域有很大的兴趣,并非常了解和能娴熟使用。希望本课程能帮助大家玩转Numpy!【优惠说明】 课程正在优惠中! 备注:购课后可加入白勇老师课程学习交流QQ群:957519975【相关课程】《玩转Matplotlib数据绘图库》课程链接:https://edu.csdn.net/course/detail/28720 《Python编程的术与道:Python语言入门》课程链接: https://edu.csdn.net/course/detail/27845  《Python编程的术与道:Python语言进阶》课程链接: https://edu.csdn.net/course/detail/28618 【课程体系结构图】  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值