numpy函数的使用
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
数据分析三剑客:Numpy,Pandas,Matplotlib
一、创建ndarray
1.使用np.array()创建
- 一维数组创建
import numpy as np np.array([1,2,3])
- 二维数组的创建
np.array([[1,2,3],[4,5,6]])
注意:
- numpy默认ndarray的所有元素的类型是相同的
- 如果传进来的列表中包含不同的类型,则统一为同一类型,优先级:str>float>int
- 使用matplotlib.pyplot获取一个numpy数组,数据来源于一张图片
import matplotlib.pylab as plt # 读取图片二进制数据
img_arr = plt.imread('img_dir') # 将图片展示
plt.imshow(img_arr) # 将图片所有数据减少
plt.imshow(img_arr - 100) # 操作该numpy数据,该操作会同步到图片中
2.使用np的routines函数创建
- np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) 等差数列
np.linspace(0,100,num=20) out: array([ 0. , 5.26315789, 10.52631579, 15.78947368,
21.05263158, 26.31578947, 31.57894737, 36.84210526,
42.10526316, 47.36842105, 52.63157895, 57.89473684,
63.15789474, 68.42105263, 73.68421053, 78.94736842,
84.21052632, 89.47368421, 94.73684211, 100. ])
- np.arange([start, ]stop, [step, ]dtype=None)
np.arange(0,100,2) out: array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32,
34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66,
68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98])
- np.random.randint(low, high=None, size=None, dtype='l')
#固定随机性
#随机因子:系统的时间
np.random.seed(100)
arr = np.random.randint(0,100,size=(4,5))
- np.random.random(size=None)
- 生成0到1的随机数,左闭右开 np.random.seed(3)
np.random.random(size=(4,5)) out: array([[0.56229626, 0.00581719, 0.30742321, 0.95018431, 0.12665424],
[0.07898787, 0.31135313, 0.63238359, 0.69935892, 0.64196495],
[0.92002378, 0.29887635, 0.56874553, 0.17862432, 0.5325737 ],
[0.64669147, 0.14206538, 0.58138896, 0.47918994, 0.38641911]])
二、ndarray的属性
- 4个必记参数: ndim:维度 shape:形状(各维度的长度) size:总长度 dtype:元素类型
arr.shape
arr.size
img_arr.size
arr.dtype
三、ndarray的基本操作
1.索引
- 一维与列表完全一致 多维时同理
print(arr) out: array([[ 8, 24, 67, 87, 79],
[48, 10, 94, 52, 98],
[53, 66, 98, 14, 34],
[24, 15, 60, 58, 16]])
print(arr[1])
out: array([48, 10, 94, 52, 98])
2.切片
- 一维与列表完全一致 多维时同理
#获取二维数组前两行
arr[0:2] #获取二维数组前两列
arr[:,0:2] #arr[hang,lie] #获取二维数组前两行和前两列数据
arr[0:2,0:2] #将数组的行倒序
arr[::-1] #列倒序
arr[:,::-1] #全部倒序
arr[::-1,::-1]
3.变形
- 使用arr.reshape()函数,注意参数是一个tuple!
- 基本使用:
- 将一维数组变形成多维数组
import numpy as np arr_1 = np.random.randint(0, 100, size=(20,)) arr_1.reshape((2, 10))
# 把其中一维的数据设为-1,会自动计算
arr_1.reshape((5, -1))
2. 将多维数组变形成一维数组
arr_1 = arr.reshape(20,)
4.级联
- np.concatenate()
- 一维,二维,多维数组的级联,实际操作中级联多为二维数组
# 按照行来进行级联
np.concatenate((arr,arr,arr),axis=1) # 按照列来进行级联
np.concatenate((arr,arr,arr),axis=0)
级联需要注意的点:
- 级联的参数是列表:一定要加中括号或小括号
- 维度必须相同
- 形状相符:在维度保持一致的前提下,如果进行横向(axis=1)级联,必须保证进行级联的数组行数保持一致。如果进行纵向(axis=0)级联,必须保证进行级联的数组列数保持一致。
- 可通过axis参数改变级联的方向
四、ndarray的聚合操作
1. 求和np.sum
arr.sum(axis=1)
2. 最大最小值:np.max/ np.min
arr.max() arr.min()
3.平均值:np.mean()
其他聚合操作
Function Name NaN-safe Version Description
np.sum np.nansum Compute sum of elements
np.prod np.nanprod Compute product of elements
np.mean np.nanmean Compute mean of elements
np.std np.nanstd Compute standard deviation
np.var np.nanvar Compute variance
np.min np.nanmin Find minimum value
np.max np.nanmax Find maximum value
np.argmin np.nanargmin Find index of minimum value
np.argmax np.nanargmax Find index of maximum value
np.median np.nanmedian Compute median of elements
np.percentile np.nanpercentile Compute rank-based statistics of elements
np.any N/A Evaluate whether any elements are true
np.all N/A Evaluate whether all elements are true
np.power 幂运算
六、ndarray的排序
1. 快速排序
np.sort()与ndarray.sort()都可以,但有区别:
- np.sort()不改变输入
- ndarray.sort()本地处理,不占用空间,但改变输入
np.sort(arr,axis=0)
numpy函数的使用的更多相关文章
- Numpy函数库基础
利用Numpy函数库构造4*4随机数组,然后将数组转化为矩阵,然后矩阵与其逆矩阵相乘,计算机处理的误差 from numpy import * random.rand(4,4) print(rando ...
- [转]Python numpy函数hstack() vstack() stack() dstack() vsplit() concatenate()
Python numpy函数hstack() vstack() stack() dstack() vsplit() concatenate() 觉得有用的话,欢迎一起讨论相互学习~Follow Me ...
- Numpy 函数总结 (不断更新)
本篇主要收集一些平时见到的 Numpy 函数. numpy.random.seed & numpy.random.RandomState np.random.seed() 和 np.rando ...
- numpy函数库中一些经常使用函数的记录
##numpy函数库中一些经常使用函数的记录 近期才開始接触python,python中为我们提供了大量的库,不太熟悉.因此在<机器学习实战>的学习中,对遇到的一些函数的使用方法进行记录. ...
- numpy函数库中一些常用函数的记录
##numpy函数库中一些常用函数的记录 最近才开始接触Python,python中为我们提供了大量的库,不太熟悉,因此在<机器学习实战>的学习中,对遇到的一些函数的用法进行记录. (1) ...
- numpy函数笔记(持续更新)
numpy函数笔记 np.isin用法 np.isin(a,b) 用于判定a中的元素在b中是否出现过,如果出现过返回True,否则返回False,最终结果为一个形状和a一模一样的数组.(注意:这里的a ...
- numpy 函数一:linspace
接触 numpy 遇到的第一个函数可能就是 linspace 函数,但是对于我们这种没有学过 matlab 的人来说,根本不知道这是什么. 所以只能自己查资料. 词典显示: 线性等分向量 线性平分矢量 ...
- numpy函数白板
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False) start 起始位置 stop 终止位置 num 个数 endpoi ...
- numpy函数fromfunction分析
从函数规则创建数组是非常方便的方法.在numpy中我们常用fromfunction函数来实现这个功能. 在numpy的官网有这么一个例子. >>> def f(x,y): ... r ...
- Python numpy函数hstack() vstack() stack() dstack() vsplit() concatenate()
感觉numpy.hstack()和numpy.column_stack()函数略有相似,numpy.vstack()与numpy.row_stack()函数也是挺像的. stackoverflow上也 ...
随机推荐
- Linux系统编程【2】——编写who命令
学到的知识点 通过实现who命令,学到了: 1.使用man命令寻找相关信息 2.基于文件编程 3.体会到c库函数与系统调用的不同 4.加深对缓冲技术的理解 who命令的作用 who命令的使用 在控制终 ...
- keras fit_generator 并行
虽然已经走在 torch boy 的路上了, 还是把碰到的这个坑给记录一下 数据量较小时,我们可直接把整个数据集 load 到内存里,用 model.fit() 来拟合模型. 当数据集过大比如几十个 ...
- [RabbitMQ]01. 在 Win10 下通过 Docker 安装
目录 win10家庭版 win10专业版和企业版 1. 开启Hyper-v 2. 安装Toolbox工具 3. 运行安装文件 4. 启动docker 5. 安装rabbitmq 6. 网页访问rabb ...
- VScode 配置c++环境
参考 https://code.visualstudio.com/docs/cpp/config-mingw https://zhuanlan.zhihu.com/p/77645306 主要 http ...
- u-boot 移植 --->1、u-boot配置(Kbuild)
早期的U-BOOT的裁剪是没有使用Kbuild工具的,后来就借鉴了Linux的Kbuild同时也是方便使用者裁剪,因为他的原理和Linux内核的配置裁剪原理是相同的.今天拿来分析的U-Boot的版本是 ...
- RT-Thread学习笔记2-互斥量与信号量
目录 1. 临界区保护 1.1 方法一:关闭系统调度保护临界区 1.2 方法二:互斥特性保护临界区 2. 信号量 2.1 信号量的定义 2.2 信号量的操作 3. 生产者.消费者问题 4. 互斥量 4 ...
- PerformanceObserver API All In One
PerformanceObserver API All In One 性能监控 https://developer.mozilla.org/en-US/docs/Web/API/Performance ...
- 如何获取豆瓣电影 API Key
如何获取豆瓣电影 API Key 豆瓣 API Key 不能使用了 ! solutions & !== ? https://frodo.douban.com/api/v2/subject_co ...
- React & CSS Modules & CSS in JS
React & CSS Modules & CSS in JS https://codesandbox.io/s/css-modules-name-mangling-ck1eo CSS ...
- 我眼中的价值币——NGK(下)
跨链交互方案并不是区块链世界中的一个新课题.自比特币诞生揭开智能合约的序幕之后,跨链交互的需求便产生了.但是,经过十年的发展,市场中的跨链解决方案进展缓慢,究之原因有以下几个方面. 首先,区块链的去中 ...