文档章节

numpy常用指令大全

o
 osc_ugeljcjn
发布于 2019/07/21 22:00
字数 1406
阅读 14
收藏 0

「深度学习福利」大神带你进阶工程师,立即查看>>>

​ 最近在自学numpy,从网上找了视频来看,感觉numpy的指令很多,怕记不清所以统一贴出来方便查阅。

import numpy as np 导入numpy模块,一般简写为np

array = np.array([[1,2,3],[2,3,4]])

numpy的属性

print(array) 打印出数组

print("number of dim:",array.ndim) 判断数组是几维的(一维二维等等)

print("shape:",array.shape)判断数组的形状

print("size:"array.size)判断数组的大小

numpy的创建array

array = np.array([[1,2,3],[2,3,4]]简单创建(注意下打印出来之后没有中间,号)

array = np.array([[1,2,3],dtype=np.int)

print(array.dtype) dtype设定数组中的格式,一般有int,float等等,默认的是64位的,如果要32位的改成int32,通常来说位数越小占用空间越小,一般保留64位

a = np.zeros((5))

a = np.nes((5))

a = np.empty(([3,4])) 常见的全0全1全空数组

a=np.arange(10,20,2).reshape((3,4)) 生成从10到20步长为2的整数数组(不包括20,10位置默认为0),并重新变为3行4列的数组格式

a = np.linespace(1,10,20)生成线段,20是生成线段的份数

numpy基础运算

a=np.array([10,20,30,40])

b=np.arange(4)生成从0到3的数组

常规的加减乘除,即+-*/都是对应位直接做计算得到结果,当运用单一矩阵乘方的时候遵循Python的规则用**,三角函数需要调用,例如c=np.sin(a).判断可以直接把条件加到括号里,如print(b<3)。二维的矩阵乘法运算(从线性代数角度来说)如下:

c_dot=np.dot(a,b)

或者

c_dot_2=a.dot(b)

随机生成一个array,每个元素都是0到1之间的随机数,需要制定形状:

a = np.random.random((2,4))

np.sum(a,axis=1)求和,axis=1是对每一列中找,axis=0是对每一行中找,会针对每一行(列)中分别查找计算

np.min(a)求最小值

np.max(a)求最大值

np.argmin(a)求最小值的索引

np.argmax(a)求最大值的索引

np.mean(a)求平均值

np.median(a)求中位数

np.cumsum(a)是一个累加的过程,逐步的加进去,显示出累加的每一步

np.diff(a)累差,就是每个元素和之前的差

np.nonzero(a)找出非0的数并将它们的索引列出来

np.sort(a)排序

np,transpose(a)矩阵反向,行列互换并且倒序

np.clip(a,3,5)截取,a中所有小于3的让他为3,大于5的让他为5,中间的不变

numpy的索引

A=np.arange(3,15).reshape((3,4))

print(A[3])类似于python,对一维来说是直接访问对应索引,对二维来说单索引访问的是对应的行,双索引才是对应的单个元素如,print(A[2][1])print(A[2,1])是一样的,print(A[2,:])代表第二行的所有数,print(A[1,1:3])第二行从1到3的数即8和9

for循环:

for row in A:

print(row) 迭代行

for column in A.T(就是前面的transpose):

print(column) 迭代列

A.flatten() 变平

a.ravel()  # returns the array, flattened

for item in A.flat:

print(item) 迭代项目,flat是上面的迭代器

numpy array合并

A = np.array([1,1,1])

B = np.array([2.2.2])

C = print(np.vstack((A,B))) vertical stack上下的合并

D = print(np.hstack((A,B))) horizontal stack 左右的合并

!--print(A[np.newaxis,:])--给A加了一个维度。?

E = np.concatenate((A,B,B),axis=0)多个array的合并,axis=0在上下维度进行合并

numpy array分割

A = np.arange(12).reshape((3,4))

print(np.spilt(A,2,axis=1)) 将A纵向平均分成2份(注意spilt中列数必须能被2整除),axis=0是横向分割

print(np.array_spilt(A,2,axis=1))``不等量分割

print(np.vspilt(A,3))

print(np.vspilt(A,3)) 同上面的合并

numpy array的复制和深度复制(copy&deep copy)

视频里讲的很简略,所以这边把官方文档转过来。

有三种情况:

#完全不复制

简单赋值不会创建数组对象或其数据的拷贝。

>>> a = np.arange(12)
>>> b = a            # no new object is created
>>> b is a           # a and b are two names for the same ndarray object
True
>>> b.shape = 3,4    # changes the shape of a
>>> a.shape
(3, 4)

Python将可变对象作为引用传递,所以函数调用不会复制。

>>> def f(x):
...     print(id(x))
...
>>> id(a)                           # id is a unique identifier of an object
148293216
>>> f(a)
148293216

#视图或浅复制

不同的数组对象可以共享相同的数据。 view 方法创建一个新的数组对象,它查看相同的数据。

>>> c = a.view()
>>> c is a
False
>>> c.base is a                        # c is a view of the data owned by a
True
>>> c.flags.owndata
False
>>>
>>> c.shape = 2,6                      # a's shape doesn't change
>>> a.shape
(3, 4)
>>> c[0,4] = 1234                      # a's data changes
>>> a
array([[   0,    1,    2,    3],
       [1234,    5,    6,    7],
       [   8,    9,   10,   11]])

对数组切片返回一个视图:

>>> s = a[ : , 1:3]     # spaces added for clarity; could also be written "s = a[:,1:3]"
>>> s[:] = 10           # s[:] is a view of s. Note the difference between s=10 and s[:]=10
>>> a
array([[   0,   10,   10,    3],
       [1234,   10,   10,    7],
       [   8,   10,   10,   11]])

深拷贝

copy 方法生成数组及其数据的完整拷贝。

>>> d = a.copy()                          # a new array object with new data is created
>>> d is a
False
>>> d.base is a                           # d doesn't share anything with a
False
>>> d[0,0] = 9999
>>> a
array([[   0,   10,   10,    3],
       [1234,   10,   10,    7],
       [   8,   10,   10,   11]])

#函数和方法概述

这里列出了一些根据类别排列的有用的NumPy函数和方法名称。完整列表见Routines。

  1. 数组创建

    arange, array, copy, empty, empty_like, eye, fromfile, fromfunction, identity, linspace, logspace, mgrid, ogrid, ones, ones_like, r, zeros, zeros_like

  2. 转换

    ndarray.astype, atleast_1d, atleast_2d, atleast_3d, mat

  3. 手法

    array_split, column_stack, concatenate, diagonal, dsplit, dstack, hsplit, hstack, ndarray.item, newaxis, ravel, repeat, reshape, resize, squeeze, swapaxes, take, transpose, vsplit, vstack

  4. 问题

    all, any, nonzero, where

  5. 顺序

    argmax, argmin, argsort, max, min, ptp, searchsorted, sort

  6. 操作

    choose, compress, cumprod, cumsum, inner, ndarray.fill, imag, prod, put, putmask, real, sum

  7. 基本统计

    cov, mean, std, var

  8. 基本线性代数

    cross, dot, outer, linalg.svd, vdot

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
静态博客网站生成器--Hexo

Hexo 是一个基于nodejs 的静态博客网站生成器,作者是来自台湾的 Tommy Chen 特点: 不可思议的快速 ─ 只要一眨眼静态文件即生成完成 支持 Markdown 仅需一道指令即可部署到 GitHub Pages 和...

匿名
2013/04/05
2.9W
4
Python数据分析工具包--Pandas

Python Data Analysis Library 或 pandas 是连接 SciPy 和 NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集...

匿名
2012/10/30
2.1W
2
AngularJS 的UI增强指令集--AngularUI

Angular UI 顾名思义,AngularJS 的UI增强指令集,提供了IE、jQuery 兼容,以及一些常用 UI 组件。 包含的模块有: UI-Utils UI-Modules UI-Alias UI-Bootstrap NG-Grid UI-Router IDE Plug...

匿名
2012/12/24
4.2W
0
纯Python图形GUI库--PyQtGraph

pyqtgraph 是纯 Python 图形 GUI 库,基于PyQT4 /pyside和NumPy。它主要目的用于在数学/科学/工程中。MIT的开源许可下发布。 主要特点: 基本的2D交互视图中框绘制 线和散点图 数据可平移/缩...

匿名
2013/05/16
9.6K
0
PS快捷键大全

一、工具箱(多种工具共用一个快捷键的可同时按【Shift】加此快捷键选取) 矩形、椭圆选框工具 【M】 移动工具 【V】 套索、多边形套索、磁性套索 【L】 魔棒工具 【W】 裁剪工具 【C】 切片工...

麻新鑫
2012/10/26
129
1

没有更多内容

加载失败,请刷新页面

加载更多

PPDet:减少Anchor-free目标检测中的标签噪声,小目标检测提升明显

本文转载自AI算法修炼营。 这篇文章收录于BMVC2020,主要的思想是减少anchor-free目标检测中的label噪声,在COCO小目标检测上表现SOTA!性能优于FreeAnchor、CenterNet和FCOS等网络。整体思路...

我爱计算机视觉
昨天
0
0
BIO、NIO、AIO 区别和应用场景

点击上方“ java1234 ”,选择“标星公众号” 优质文章,第一时间送达 66套java从入门到精通实战课程分享...

小锋2
今天
0
0
ContentProvider(查询 插入 修改 删除 )

注意 本篇实在sqlite的基础上编写的所以建议首先了解sqlite 首先建立两个模块 ContentProvider ContentResolver ContentProvider 里面需要建立表和建立连接 所以在这里需要建立DBHelp类 DBHe...

osc_6ttvlt1w
15分钟前
7
0
用这个网站一查,才知道自己被卖了

还记得上个月好多大佬的Twitter账号被盗用于网络诈骗的事件吗。 7月15日,美国前总统奥巴马、“股神”巴菲特、特斯拉CEO马斯克、微软创始人比尔·盖茨等人的账户连续“被登录”,用来向大众诈...

猿大白
今天
0
0
牛客多校第9场E Groundhog Chasing Death

开始以为是什么高深的数论题,后来 重新 推了一下,得到了个这么个式子。 ∏ i = a b ∏ j = c d ( p 1 m i n ( a 1 [ 1 ] i , a 2 [ 1 ] j ) p 2 m i n ( a 1 [ 2 ] i , a 2 [ 2 ] j ) . . ...

osc_wdq5dwoy
16分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部