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的更多相关文章

  1. python模块之numpy与pandas

    一.numpy numpy是python数据分析和机器学习的基础模块之一.它有两个作用:1.区别于list列表,提供了数组操作.数组运算.以及统计分布和简单的数学模型:2.计算速度快[甚至要由于pyt ...

  2. python模块之numpy,pandas基本用法

    numpy: 是 Python 的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库简单来说:就是支持一维数组和多维数组的创建和操作,并有丰富的函数库. 直接看例子 ...

  3. Python之路-numpy模块

    这里是首先需要安装好Anaconda Anaconda的安装参考Python之路-初识python及环境搭建并测试 配置好环境之后开始使用Jupyter Notebook 1.打开cmd,输入 jup ...

  4. Python学习day18-常用模块之NumPy

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  5. Python基础篇【第5篇】: Python模块基础(一)

    模块 简介 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就 ...

  6. 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇

    始终无法有效把word排版好的粘贴过来,排版更佳版本请见知乎文章: https://zhuanlan.zhihu.com/p/24309547 实在搞不定博客园的排版,排版更佳的版本在: 给深度学习入 ...

  7. Python数据分析之numpy学习

    Python模块中的numpy,这是一个处理数组的强大模块,而该模块也是其他数据分析模块(如pandas和scipy)的核心. 接下面将从这5个方面来介绍numpy模块的内容: 1)数组的创建 2)有 ...

  8. Python模块学习

    6. Modules If you quit from the Python interpreter and enter it again, the definitions you have made ...

  9. 50个很棒的Python模块

    50个很棒的Python模块 我很喜欢Python,Python具有强大的扩展能力,我列出了50个很棒的Python模块,包含几乎所有的需要:比如Databases,GUIs,Images, Soun ...

随机推荐

  1. Realsense深度相机资料

    1.Realsense SDK 2.0 Ubuntu 16.04 安装指导网址 https://github.com/IntelRealSense/librealsense/blob/master/d ...

  2. Ubuntu14.04文件目录说明

    一.Dev设备目录 二.etc配置文件目录 三.bin默认程序安装目录 四.boot系统启动用到的配置文件以及内核镜像 五.home用户目录 六.lib库文件目录 七.media系统自动挂载设备会选择 ...

  3. A - Dictionary

    传送门 题目大意 给你n个字符串,问是否可以通过改变26个字母的排列顺序是这n个字符串的字典序是非降排列的. 分析 我们考虑设相邻两个字符串的第一个不相同字符的位置为j,以为要求字典序不降,所以有第i ...

  4. Luogu 2114 [NOI2014]起床困难综合症

    还挺简单的. 发现这几个二进制运算并不会进位,所以我们从高到低按位贪心,一位一位计算贡献. 发现$2^{30}$刚好大于$1e9$,所以最多只要算29位. 首先算出一个全都是$0$的二进制数和一个全都 ...

  5. POJ 2686 Traveling by Stagecoach (状压DP)

    题意:有一个人从某个城市要到另一个城市, 有n个马车票,相邻的两个城市走的话要消耗掉一个马车票.花费的时间呢,是马车票上有个速率值 ,问最后这个人花费的最短时间是多少. 析:和TSP问题差不多,dp[ ...

  6. [译]Javascript中的循环

    本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...

  7. ServletContext接口(六)

    javax.servlet.ServletContext接口 ServletContext(上下文)是公用的,就是.net中的application,主要用到的就是全局set设置值,get获取值,ja ...

  8. CefSharp49.0.1 SetZoomLevel

    SetZoomLevel(double zoomLevel)   -8<= zoomLevel <=9 Each zoom level increases the zoom by 20%. ...

  9. java线程池的使用(转)

    在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统 ...

  10. LinkExtractor 构造器各参数说明

    LinkExtractor 构造器各参数说明 特例: LinkExtractor构造器的所有参数都有默认值 各参数说明: allow 接收一个正则表达式或一个正则表达式列表,提取绝对url与正则表达式 ...