1.生成数组

import numpy as np

把python列表转换为数组

>>> np.array([1, 2, 3])

array([1, 2, 3])

把python的range对象转换为数组

>>> range(5)

range(0, 5)

生成等差数组

>>> np.linspace(0, 10, 5)

array([  0. ,   2.5,   5. ,   7.5,  10. ])

对数数组

>>> np.logspace(0, 10, 2)

array([  1.00000000e+00,   1.00000000e+10])

全0数组

>>> np.zeros((3, 3))

array([[ 0.,  0.,  0.],

[ 0.,  0.,  0.],

[ 0.,  0.,  0.]])

全1数组

>>> np.ones((2, 2))

array([[ 1.,  1.],

[ 1.,  1.]])

单位矩阵

>>> np.identity(2)

array([[ 1.,  0.],

[ 0.,  1.]])

空数组,只申请空间而不初始化,元素值不确定

>>> np.empty((2, 2))

array([[ 1.,  1.],

[ 1.,  1.]])

 

2.数组与数值的算术运算

数组可以直接与数值进行加减乘除运算,对应的是数组里每个元素与数值进相应的运算

3.数组与数组的算术运算

数组与数组相乘

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

>>> b = np.array(([1, 2, 3], [4, 5, 6], [7, 8, 9]))

>>> a*b

array([[ 1,  4,  9],

[ 4, 10, 18],

[ 7, 16, 27]])

一维数组与二维数组的运算,相当于把一维数组的维度看作一个整体向量与二维数组的第一维度中每个对应向量进行运算,并且运算的是针对两个向量中的对应每个元素进行运算,注意这两个运算的向量的维度需要相同

数组与数组的加减除运算规律如上相同

4.二维数组转置

>>> b

array([[1, 2, 3],

[4, 5, 6],

[7, 8, 9]])

>>> b.T

array([[1, 4, 7],

[2, 5, 8],

[3, 6, 9]])

注意一维数组转置后和原理是一样的

5.向量内积

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

>>> b = np.array(([5, 6], [7, 8]))

>>> a.dot(b)

array([[19, 22],

[43, 50]])

6.数组元素访问

创建等差数组

>>> arr = np.arange(0, 100, 10, dtype=np.floating)

>>> arr

array([  0.,  10.,  20.,  30.,  40.,  50.,  60.,  70.,  80.,  90.])

生成5个随机整数作为下标

>>> index = np.random.randint(0, len(arr), 5)

>>> index

array([5, 4, 2, 2, 8])

同时访问多个元素的值

>>> arr[index]

array([ 50.,  40.,  20.,  20.,  80.])

同时修改多个下标指定的元素值

>>> arr[index] = [1, 2, 3, 4, 5]

>>> arr

array([  0.,  10.,   4.,  30.,   2.,   1.,  60.,  70.,   5.,  90.])

7.对数组进行函数运算

np.sin(arr)

np.cos(arr)

np.round(_) # 四舍五入

np.floor(arr) # 所有元素向下取整

np.ceil(arr) # 所有元素向上取整

8.对矩阵不同维度上的元素进行计算

np.sum(arr, axis=0) # 二维数组纵向求和

np.mean(arr, axis=1) # 二维数组横向计算算术平均值

np.average(arr, axis=0, weights=weight) #二维数组纵向计算加权平均值

np.max(arr, axis=0) #  二维数组每列最大

np.std(arr, axis=1)  # 每行元素的标准差

np.var(arr, axis=0) # 每列元素的标准差

np.sort(arr, axis=0) # 纵向排序

9.改变数组大小

>>> a

array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])

>>> a.shape = 2, 5

>>> a

array([[ 1,  2,  3,  4,  5],

[ 6,  7,  8,  9, 10]])

>>> a.shape = 5, -1

>>> a

array([[ 1,  2],

[ 3,  4],

[ 5,  6],

[ 7,  8],

[ 9, 10]])

>>> b = a.reshape(2, -1)

>>> b

array([[ 1,  2,  3,  4,  5],

[ 6,  7,  8,  9, 10]])

10.切片操作

>>> b

array([[ 1,  2,  3,  4,  5],

[ 6,  7,  8,  9, 10]])

>>> b[1][::2]

array([ 6,  8, 10])

其他切片方式与列表切片相似

11.布尔运算

>>> b

array([[ 1,  2,  3,  4,  5],

[ 6,  7,  8,  9, 10]])

>>> b > 5

array([[False, False, False, False, False],

[ True,  True,  True,  True,  True]], dtype=bool)

>>> a = np.random.rand(5)

>>> b = np.random.rand(5)

>>> a

array([ 0.35153042,  0.7211572 ,  0.01421697,  0.80853614,  0.00126357])

>>> b

array([ 0.54159521,  0.14100028,  0.24689119,  0.40688594,  0.60708272])

>>> a > b

array([False,  True, False,  True, False], dtype=bool)

12.广播

>>> a = np.arange(0, 100, 20).reshape(-1, 1)

>>> a

array([[ 0],

[20],

[40],

[60],

[80]])

>>> b = np.arange(0, 5)

>>> b

array([0, 1, 2, 3, 4])

>>> a + b

array([[ 0,  1,  2,  3,  4],

[20, 21, 22, 23, 24],

[40, 41, 42, 43, 44],

[60, 61, 62, 63, 64],

[80, 81, 82, 83, 84]])

>>> a*b

array([[  0,   0,   0,   0,   0],

[  0,  20,  40,  60,  80],

[  0,  40,  80, 120, 160],

[  0,  60, 120, 180, 240],

[  0,  80, 160, 240, 320]])

13.分段函数

>>> b

array([0, 1, 2, 3, 4])

>>> np.where(b > 1)

(array([2, 3, 4], dtype=int64),)

>>> np.where(b > 1, 0, 1)

array([1, 1, 0, 0, 0])

小于2的元素乘以2的幂次方,大于等于3的元素乘以2+2,没有选择到的元素为返回0

>>> np.piecewise(b, [b < 2, b >=3], [lambda x:x ** 2, lambda x: x*2 + 2])

array([ 0,  1,  0,  8, 10])

14.计算唯一值以及出现次数

>>> a

array([3, 5, 0, 5, 7, 8, 9, 6, 6, 9])

统计出现的次数

>>> np.bincount(a)

array([1, 0, 0, 1, 0, 2, 2, 1, 1, 2], dtype=int64)

返回唯一值,消去重复

>>> np.unique(a)

array([0, 3, 5, 6, 7, 8, 9])

15.矩阵运算

>>> a = np.random.random((2, 2))*100 % 10

>>> a

array([[ 7.14583047,  4.97659447],

[ 4.54034887,  4.28307445]])

>>> mat = np.matrix(a)

>>> mat

matrix([[ 7.14583047,  4.97659447],

[ 4.54034887,  4.28307445]])

>>> mat.sum()

20.945848263382267

>>> mat.max()

7.1458304748163357

>>> mat.shape

(2, 2)

>>> mat.size

4

>>> mat.mean()

5.2364620658455667

>>> mat.argsort(axis=0)

matrix([[1, 1],

[0, 0]], dtype=int64)

>>> mat.argsort(axis=1)

matrix([[1, 0],

[1, 0]], dtype=int64)

>>> mat.diagonal()

matrix([[ 7.14583047,  4.28307445]])

numpy用法归纳的更多相关文章

  1. 比较合并工具vimdiff的主要用法归纳

    参考:https://www.ibm.com/developerworks/cn/linux/l-vimdiff/ vimdiff主要用法归纳如下:   1.打开文件 vimdiff file1 fi ...

  2. until与till的用法归纳

    until与till的用法归纳 崔荣斌 until和till两者都可作介词.连词,一般情况下可以互换使用.用于肯定句时,主句的动词只用延续性的,它所表示的动作一直延续到till或until表示的时间为 ...

  3. numpy用法小结

    前言 个人感觉网上对numpy的总结感觉不够详尽细致,在这里我对numpy做个相对细致的小结吧,在数据分析与人工智能方面会有所涉及到的东西在这里都说说吧,也是对自己学习的一种小结! numpy用法的介 ...

  4. python3 numpy基本用法归纳总结

    安装numpy : pip install numpy numpy数组生成方法总结 In [4]: import numpy as np #使用列表生成一个一维数组 data = [1,2,3,4,5 ...

  5. python科学计算包numpy用法(一)

    numpy是python中一个用来做科学计算的包,用起来十分方便,下面是我总结的numpy的用法: 1.如何创建矩阵 创建矩阵有很多种方法,主要包括以下几种: 通过array函数创建 >> ...

  6. const用法归纳总结 C++

    非常好的一篇分析const的总结归纳, 在此谢谢原作者:http://blog.csdn.net/zcf1002797280/article/details/7816977 在普通的非 const成员 ...

  7. 自己总结numpy用法

    最近用numpy比较多,边用边自己总结用法. 1. 数组 1.1 生成 m行 * n列 的随机数组 import numpy as np # 生成 m行*n列 的随机数组 # np.random.ra ...

  8. ecshop中foreach的详细用法归纳

    ec模版中foreach的常见用法. foreach 语法: 假如后台:$smarty->assign('test',$test); {foreach from=$test item=list ...

  9. Numpy 用法小结

    1.  asarray 函数 可以将输入数据转化为矩阵格式. 输入数据可以是(列表,元组,列表的列表,元组的元组,元组的列表等这些数组形式). >>> asarray([(1,2,3 ...

随机推荐

  1. ISLR系列:(4.2)模型选择 Ridge Regression & the Lasso

    Linear Model Selection and Regularization 此博文是 An Introduction to Statistical Learning with Applicat ...

  2. Html5学习之旅-html5的留言记事本开发(17)

    web留言记事本的开发 !!!!!代码如下 index.html的代码 <!DOCTYPE html> <html lang="en"> <head& ...

  3. 广义线性模型 R--glm函数

    R语言glm函数学习:  [转载时请注明来源]:http://www.cnblogs.com/runner-ljt/ Ljt 作为一个初学者,水平有限,欢迎交流指正. glm函数介绍: glm(for ...

  4. SMO

    序列最小优化算法(英语:Sequential minimal optimization, SMO)是一种用于解决支持向量机训练过程中所产生优化问题的算法.SMO由微软研究院的约翰·普莱特(John P ...

  5. SpriteBuilder修改CCB文件中的子CCB文件需要注意的一个地方

    在SpriteBuilder中如果一个CCB(比如一个场景)中嵌入了另一个子CCB文件(比如一个player),那么当给该子CCB中的root对象添加若干属性的时候,必须注意到这个并没有应用到父CCB ...

  6. mysql_建立索引的优缺点

    http://blog.csdn.net/superit401/article/details/51291603 建立索引的优缺点: 为什么要创建索引呢? 这是因为,创建索引可以大大提高系统的性能.  ...

  7. android 高斯模糊实现

    高斯模糊 高斯模糊就是将指定像素变换为其与周边像素加权平均后的值,权重就是高斯分布函数计算出来的值. 一种实现 点击打开链接<-这里是一片关于高斯模糊算法的介绍,我们需要首先根据高斯分布函数计算 ...

  8. The 14th tip of DB Query Analyzer

      The 14th tip of DB Query Analyzer Ma Genfeng (Guangdong Unitoll Services incorporated, Guangzhou 5 ...

  9. WPF中使用后台代码来控制TreeView的选择项(SelectedItem)以及展开节点操作

    首先为TreeView控件制作一个Style: <Style x:Key="LibraryTreeViewItemStyle" TargetType="{x:Typ ...

  10. Python 可视化TVTK CubeSource管线初使用

    CubeSource对象是长方体数据源对象.本次在安装成功TVTK库的基础上显示一个长方体对象.通过以下代码,我们设置一个长宽高分别为1.0,2.0,3.0的长方体数据源并通过管线显示出来. from ...