Numpy学习50例
基础部分
1、导入numpy模块
import numpy as np
2、查看numpy版本信息
print(np.__version__)
numpy的主要对象的多维数组Ndarray。Numpy中维度(dimensions)叫做轴(axis),轴的个数叫做秩。
3、通过列表创建一位数组
np.array([1, 2, 3])
4、通过列表创建一个二维数组
np.array([(1, 2, 3),(4, 5, 6)])
5、创建全为0的二维数组
np.zeros((3,3))
6、创建全为1的三维数组
np.ones((2,3,4))
7、创建一维等差数组
np.arange(5)
8、创建二维等差数组
np.arange(6).reshape(2,3)
9、创建二维单位矩阵
np.eye(3)
10、创建等间隔一维数组(1到10之间,共6个数,数字之间间隔相同)
np.linspace(1, 10, num=6)
11、创建二维随机数组
np.random.rand(2,3)
下面说明一下random模块中的一些常用函数的用法
- numpy.random.rand(d0, d1, ..., dn):生成一个[0,1)之间的随机浮点数或N维浮点数组。
- numpy.random.randn(d0, d1, ..., dn):生成一个浮点数或N维浮点数组,取数范围:正态分布的随机样本数。
- numpy.random.randint(low, high=None, size=None, dtype='l'):生成一个整数或N维整数数组,取数范围:若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数。
- numpy.random.seed():使得随机数据可预测。当我们设置相同的seed,每次生成的随机数相同。如果不设置seed,则每次会生成不同的随机数
12、依据自定义函数创建数组
np.fromfunction(lambda i, j: i +j, (5, 6))
fromfunction()方法可以根据矩阵的行号列号生成矩阵的元素。 例如创建一个矩阵,矩阵中的每个元素都为行号和列号的和。
import numpy as np
def func(i,j):
return i+j
a = np.fromfunction(func,(5,6))
第一个参数为指定函数,第二个参数为列表list或元组tuple,说明矩阵的大小
print(a)
输出:[[ 0. 1. 2. 3. 4. 5.]
[ 1. 2. 3. 4. 5. 6.]
[ 2. 3. 4. 5. 6. 7.]
[ 3. 4. 5. 6. 7. 8.]
[ 4. 5. 6. 7. 8. 9.]]
注意这里行号的列号都是从0开始的,func传进去的实参是矩阵的行列号
13、矩阵乘法运算
np.dot(A, B)
14、使用np.mat将数组定义为矩阵,直接使用*进行矩阵乘法运算
np.mat(A) * np.mat(B)
15、矩阵的转置
A.T
16、矩阵求逆
np.linalg.inv(A)
17、常用数学函数计算
np.sin(a)
np.exp(a)
np.sqrt(a) #开平方运算
np.power(a, 3) #立方根运算
18、数组的切片和索引
a = np.array([1, 2, 3, 4, 5])
a[0], a[-1]
a[0:2], a[:-1]
19、更改数组的形状(不改变原始数组)
a.reshape(2,3)
20、更改数组形状(改变原始数组)
a.resize(2, 3)
21、展平数组(将多维变成一维)
a.ravel() a.flatten()
numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响(reflects)原始矩;而numpy.ravel()返回的是视图(view),会影响(reflects)原始矩阵。
22、垂直拼合数组
np.vstack((a, b))
23、水平拼合数组
np.hstack((a, b))
24、沿轴分隔数组
np.hsplit(a, 3) #沿横轴切分数组。a是ndarray数组,3表示切分为几份
np.vsplit(a,2) #沿纵轴切分数组。
25、返回数组最值
np.min(a, axis=num)
np.max(a, axis=num)
np.argmax(a, axis=num) #返回最大值的索引
np.argmin(a, axis=num)
26、数组的统计特性计算
np.median(a, axis=num) #指定维度的中位数
np.mean(a, axis= num) #算数平均值
np.average(a, axis= num) #加权平均值
np.var(a, axis = num) #方差
np.std(a, sxis = num) #标准差
进阶部分
27、创建一个5*5的二维数组,其中边界值为1,其余值为0
arr = np.ones((5,5)) #方法1
arr[1:-1,1:-1] = 0
z
arr = np.ones((5,5)) #方法二
arr = np.pad(arr, pad_width=1, mode='constant', constant_values=0)
28、创建5*5的二维数组,并设置1,2 ,3 ,4落在其对角线下方
arr = np.diag(1+np.arange(4), k = -1)
29、创建一个0-10的一维数组。并将大于等于5的数置为0
arr1 = np.random.randint(0,10,10)
arr1[arr1 >= 5] = 0
29、找出两个一维数组中子相同的元素
arr1 = np.random.randint(0,10,10)
arr2 = np.random.randint(0,10,10)
np.intersect1d(arr1,arr2)
30、打印今天、昨天、明天
yesterday = np.datetime64('today', 'D') - np.timedelta64(1, 'D')
today = np.datetime64('today', 'D')
tomorrow = np.datetime64('today', 'D') + np.timedelta64(1, 'D')
print("yesterday: ", yesterday)
print("today: ", today)
print("tomorrow: ", tomorrow)
31、将数组排序
Z = np.random.random(10)
Z.sort()
32、将float32转化为整型
arr = np.arange(10, dtype = np.float32)
arr = arr.astype(np.int32, copy = False)
33、将随机二维数组按照第3列从上到下升序排列
arr = np.random.randint(0, 10, (5,5))
arr[arr[:,2].argsort()]
34、将二维数组的前两行进行交换
A = np.arange(25).reshape(5,5)
A[[0,1]] = A[[1,0]]
35、找出随机一维数组中出现频率最高的值
arr = np.random.randint(0,10,50)
np.bincount(arr).argmax()
36、对于给定的5*5二维数组,在其内部随机放置num个值为1的数
arr = np.zeros((5,5))
np.put(arr, np.random.choice(range(5*5), p, replace=False), 1)
37、获得二维数组点积结果的对角线数组
A = np.random.uniform(0,1,(3,3))
A = np.random.uniform(0,1,(3,3))
np.sum(A*B.T,axis = 1) #较快的方法
np.diag(np.dot(A, B)) #较慢的方法
38、设置数组中的各元素的值,使其保留两位小数
np.set_printoptions(precision=2)
39、计算两个数组之间的欧式距离
np.linalg.norm(b-a)
Numpy学习50例的更多相关文章
- (转)Python数据分析之numpy学习
原文:https://www.cnblogs.com/nxld/p/6058572.html https://morvanzhou.github.io/tutorials/data-manipulat ...
- Python数据分析之numpy学习
Python模块中的numpy,这是一个处理数组的强大模块,而该模块也是其他数据分析模块(如pandas和scipy)的核心. 接下面将从这5个方面来介绍numpy模块的内容: 1)数组的创建 2)有 ...
- 数据分析之Pandas和Numpy学习笔记(持续更新)<1>
pandas and numpy notebook 最近工作交接,整理电脑资料时看到了之前的基于Jupyter学习数据分析相关模块学习笔记.想着拿出来分享一下,可是Jupyter导出来h ...
- NumPy学习(让数据处理变简单)
NumPy学习(一) NumPy数组创建 NumPy数组属性 NumPy数学算术与算数运算 NumPy数组创建 NumPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型. 它描述相同 ...
- numpy 学习笔记
numpy 学习笔记 导入 numpy 包 import numpy as np 声明 ndarray 的几种方法 方法一,从list中创建 l = [[1,2,3], [4,5,6], [7,8,9 ...
- Numpy学习1
NumPy学习(1) 参考资料: http://www.cnblogs.com/zhanghaohong/p/4854858.html http://linusp.github.io/2016/02/ ...
- Numpy学习笔记(下篇)
目录 Numpy学习笔记(下篇) 一.Numpy数组的合并与分割操作 1.合并操作 2.分割操作 二.Numpy中的矩阵运算 1.Universal Function 2.矩阵运算 3.向量和矩阵运算 ...
- 【大数据技术能力提升_2】numpy学习
numpy学习 标签(空格分隔): numpy python 数据类型 5种类型:布尔值(bool),整数(int),无符号整数(uint).浮点(float).复数(complex) 支持的原始类型 ...
- Numpy学习之——数组创建
Numpy学习之--数组创建 过程展示 import numpy as np a = np.array([2,3,9]) a array([2, 3, 9]) a.dtype dtype('int32 ...
随机推荐
- js把一个数组插入到另一个数组的指定位置
var arr1 = ['a', 'b', 'c']; var arr2 = ['1', '2', '3']; // 把arr2 变成一个适合splice的数组(包含splice前2个参数的数组) a ...
- 树结构(三)----平衡二叉树(AVL树)
将二叉排序树的的缺点优化,继承二叉排序的树的优化 左子树和右子树的高度差的绝对值不超过1
- 2018.07.10 NOIP模拟 sort(单调队列)
Sort 题目背景 SOURCE:NOIP2016-RZZ-4 T1 题目描述 给你一个长度为 n 的排列,小W每次可以选择一个数,做以下操作: 不断把这个数与它右边的数交换. 当它右边没有数,或它右 ...
- Error setting expression 'XXX‘'[Ljava.lang.with value '[Ljava.lang.String;@10101fb'
ognl报的警告,说明你的格式错误,一般是日期格式错误,格式转换器的应用,id设置的类型不对String 类型,输入了Int类型所以方法一是改变这个类中的id的属性 然后get和set也跟着改变 另一 ...
- HDU 5618 Jam's problem again (cdq分治+BIT 或 树状数组套Treap)
题意:给n个点,求每一个点的满足 x y z 都小于等于它的其他点的个数. 析:三维的,第一维直接排序就好按下标来,第二维按值来,第三维用数状数组维即可. 代码如下: cdq 分治: #pragma ...
- python 编码方式大全 fr = open(filename_r,encoding='cp852')
7.8.3. Standard Encodings Python comes with a number of codecs built-in, either implemented as C fun ...
- 极小极大搜索方法、负值最大算法和Alpha-Beta搜索方法
1. 极小极大搜索方法 一般应用在博弈搜索中,比如:围棋,五子棋,象棋等.结果有三种可能:胜利.失败和平局.暴力搜索,如果想通过暴力搜索,把最终的结果得到的话,搜索树的深度太大了,机器不能满足, ...
- dropzonejs中文翻译手册
由于项目需要,完成一个web的图片拖拽上传,也就顺便学习和了解了一下前端的比较新的技术:HTML5的api,作为一名前端的菜鸟,没什么可说的,直接分享自己学习的资料: 关于HTML5 的这些新的特性大 ...
- Spring中property-placeholder的使用与解析
Spring中property-placeholder的使用与解析 我们在基于spring开发应用的时候,一般都会将数据库的配置放置在properties文件中. 代码分析的时候,涉及的知识点概要: ...
- bootstrap modal
模态框提供了两个可选尺寸,通过为 .modal-dialog 增加一个样式调整类实现.加modal-lg,加modal-sm,不加也可以,共有三种尺寸. 触发方式,data-target, 感觉比js ...