python模块之numpy
Numpy是一个第三方库,是数组相关的运算
通过pip安装;pip install numpy
Anaconda python的一个科学计算发行版本,安装后将不必单独安装numpy,下面的库模块也将不必安装Scipu,numpy,pandas,matplotlib,scikit-learn
实例演示
import numpy as np #用列表创建数组
arr = np.array([1,2,3,4])#用普通列表创建数组
arr_2d = np.array([[1,2],[3,4]]) #嵌套列表创建多维数组 arr.ndim #1,数组维度
arr_2d.ndim #2 ,数组维度 arr.shape #(4,) 数组形状
arr_2d.shape #(2,2) 数组形状 arr.dtype #dtype('int32'),数组类元素类型
#数组函数生成数组
arr2 = np.arange(10) #[0,10)区间函数
print(arr2)
arr3 = np.linspace(0,4,10) # 0到4之间等分10份
print(arr3)
arr4 = np.random.randn(6,4) #正态分布的随机数
print(arr4)
arr5 = np.random.randint(1,5,(3,4))#1-5随机选整数,形成3*4的数组
print(arr5)
结果:
[0 1 2 3 4 5 6 7 8 9]
[0. 0.44444444 0.88888889 1.33333333 1.77777778 2.22222222
2.66666667 3.11111111 3.55555556 4. ]
[[ 0.66212053 -0.09177667 0.1540246 -0.60972427]
[-0.29582584 -1.78060509 0.85346138 0.98237782]
[ 0.81189452 1.05013452 -1.30248473 1.68647191]
[-0.51096937 0.55555892 1.04796969 -0.68796894]
[ 1.90261247 0.66688596 -0.83434671 -1.96265811]
[-0.55722723 -0.49191761 0.53691393 0.32902115]]
[[2 2 4 4]
[4 3 1 3]
[2 2 4 2]]
#特殊方法数组
zero = np.zeros((3,5)) #数组元素为0的3*5数组
print(zero.dtype,zero) one = np.ones((3,5),dtype="int32") #数组元素为1的3*5数组,dtype指定数组内元素的数据类型
print(one.dtype,one) eye_arr = np.eye(6) #对角线为1的数组
print(eye_arr)
结果:
float64 [[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]
int32 [[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]]
[[1. 0. 0. 0. 0. 0.]
[0. 1. 0. 0. 0. 0.]
[0. 0. 1. 0. 0. 0.]
[0. 0. 0. 1. 0. 0.]
[0. 0. 0. 0. 1. 0.]
[0. 0. 0. 0. 0. 1.]]
#数组的 索引和切片
arr5 = np.array([[4, 2, 2, 2],[3, 2, 2, 4],[3, 2, 1, 4]])
arr5[0] #array([4, 2, 2, 2])
arr5[0,0] #4
arr5[-1] # array([3, 2, 1, 4])
arr5[-1,-1] #4
arr5[:2,1] #array([2,2])切片,逗号前表示行切片,逗号后表示列切片
#改变数组形状
arr6 = arr5.reshape(4,3)#生成新的数组,要求元素必须相等
print(arr6)
arr7 = arr5.reshape(2,6)
print(arr7)
arr8 = arr7.ravel() #变成1维数组
print(arr8) #矩阵转置
arr11 = arr7.transpose() #行列互换
print(arr11) #矩阵广播:至少有个维度是相同的(标量是个特殊情况)
one = one*10
print(one)
结果:
[[4 2 2]
[2 3 2]
[2 4 3]
[2 1 4]]
[[4 2 2 2 3 2]
[2 4 3 2 1 4]]
[4 2 2 2 3 2 2 4 3 2 1 4]
[[4 2]
[2 4]
[2 3]
[2 2]
[3 1]
[2 4]]
[[10. 10. 10. 10. 10.]
[10. 10. 10. 10. 10.]
[10. 10. 10. 10. 10.]]
#常用运算
arr9 = np.ones((2,6))
print(arr9)
arr79 = arr7+arr9
print(arr79)
arr7_9 = arr7-arr9
print(arr7_9)
arr10 = arr7*arr9
print(arr10)
#np.dot() #点乘
结果:
[[1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1.]]
[[5. 3. 3. 3. 4. 3.]
[3. 5. 4. 3. 2. 5.]]
[[3. 1. 1. 1. 2. 1.]
[1. 3. 2. 1. 0. 3.]]
[[4. 2. 2. 2. 3. 2.]
[2. 4. 3. 2. 1. 4.]]
print(np.sin(arr10)) #arr10的每个元素求正选
print(np.sqrt(arr10)) #arr10的每个元素求平分根
结果:
[[-0.7568025 0.90929743 0.90929743 0.90929743 0.14112001 0.90929743]
[ 0.90929743 -0.7568025 0.14112001 0.90929743 0.84147098 -0.7568025 ]]
[[2. 1.41421356 1.41421356 1.41421356 1.73205081 1.41421356]
[1.41421356 2. 1.73205081 1.41421356 1. 2. ]]
#数组最大最小
arr10.max() #求最大值
arr10.argmax() #最大值所在索引
arr10.min() #求最小值
arr10.argmin() #最小值所在索引
arr10.sum() #求和
python模块之numpy的更多相关文章
- python模块之numpy与pandas
一.numpy numpy是python数据分析和机器学习的基础模块之一.它有两个作用:1.区别于list列表,提供了数组操作.数组运算.以及统计分布和简单的数学模型:2.计算速度快[甚至要由于pyt ...
- python模块之numpy,pandas基本用法
numpy: 是 Python 的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库简单来说:就是支持一维数组和多维数组的创建和操作,并有丰富的函数库. 直接看例子 ...
- Python之路-numpy模块
这里是首先需要安装好Anaconda Anaconda的安装参考Python之路-初识python及环境搭建并测试 配置好环境之后开始使用Jupyter Notebook 1.打开cmd,输入 jup ...
- Python学习day18-常用模块之NumPy
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- Python基础篇【第5篇】: Python模块基础(一)
模块 简介 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就 ...
- 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇
始终无法有效把word排版好的粘贴过来,排版更佳版本请见知乎文章: https://zhuanlan.zhihu.com/p/24309547 实在搞不定博客园的排版,排版更佳的版本在: 给深度学习入 ...
- Python数据分析之numpy学习
Python模块中的numpy,这是一个处理数组的强大模块,而该模块也是其他数据分析模块(如pandas和scipy)的核心. 接下面将从这5个方面来介绍numpy模块的内容: 1)数组的创建 2)有 ...
- Python模块学习
6. Modules If you quit from the Python interpreter and enter it again, the definitions you have made ...
- 50个很棒的Python模块
50个很棒的Python模块 我很喜欢Python,Python具有强大的扩展能力,我列出了50个很棒的Python模块,包含几乎所有的需要:比如Databases,GUIs,Images, Soun ...
随机推荐
- C++面向对象类的实例题目十一
题目描述: 写一个程序计算三角形,正方形和圆形3种图形的面积 程序代码: #include<iostream> #include<cmath> #define PAI 3.14 ...
- Arduino 003 Ubuntu(Linux) 系统下,如何给板子烧写程序
Ubuntu/Linux 系统下,如何给Arduino板子烧写程序 使用的虚拟机软件:VMware 11 我的Ubuntu系统:Ubuntu 14.04.10 TLS Arduino 软件的版本:Ar ...
- 高性能MySQL笔记-第5章Indexing for High Performance-004怎样用索引才高效
一.怎样用索引才高效 1.隔离索引列 MySQL generally can’t use indexes on columns unless the columns are isolated in t ...
- ASCII\UNICODE编码的区别
前几天,Google给我Hotmail邮箱发了封确认信.我看不懂,不是因为我英文不行,而是"???? ????? ??? ????"的内容让我不知所措.有好多程序员处理不好编码问题 ...
- java中的全局变量与静态变量的区别与联系?有时候为什么专门定义静态变量。(标题党~~)
static代表“每个类一个”而不是“每个对象一个”.即静态变量是类的所有对象共有的. 1 static JFrame f; static MyDrawPanel ml; 整个应用程序如下: 定义在p ...
- ZROI2018普转提day1t1
传送门 分析 我们先二分一下最终的平均值mid,然后让序列中的每一个数都减去这个mid,之后用新序列的前缀和建一棵线段树,枚举起点i,然后求出此时在i+L-1~i+R-1范围内的前缀和的最大值,用这个 ...
- poj3734 Blocks
传送门 题目大意 有n个方块,有1,2,3,4四种颜色对其进行染色,求1,2颜色的方块个数均为偶数的方案数对10007取模的值. 分析 我们假设1表示这个颜色个数是奇数,0表示是偶数,所以对于所有状态 ...
- 树莓派研究笔记(7)-- lakka 《仙剑奇侠传》的完美移植
仙剑,这是我玩的第一个电脑游戏.真的太经典,无法超越.原来第一次玩的缺少开场动画,很多地方不明不白的.现在终于我们可以把这个梦想继续到树莓派中. LAKKA是支持DOS模拟器的,所以我们一定要下载DO ...
- Ubuntu 切换到桌面 快捷键设置
设置完以上步骤后,这接windows系统键+d,即可切换到桌面. ps:按Alt+Tab键,可以切换到自己想要的图标进程.
- 2013年第四届蓝桥杯国赛 九宫重排(HashMap+双BFS优化)
九宫重排 时间限制:1.0s 内存限制:256.0MB 问题描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干 ...