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. Codeforces #505(div1+div2) B Weakened Common Divisor

    题意:给你若干个数对,每个数对中可以选择一个个元素,问是否存在一种选择,使得这些数的GCD大于1? 思路:可以把每个数对的元素乘起来,然后求gcd,这样可以直接把所有元素中可能的GCD求出来,从小到大 ...

  2. 关于A类,B类,C类IP地址的网段和主机数的计算方法

    关于A类,B类,C类IP地址的网段和主机数的计算方法 IP地址是一个32位的二进制数,由四个八位字段组成.每个IP地址包括两部分:一部分为网络标识(网络号),一部分为主机标识(主机号). A类地址前8 ...

  3. 1用java实现冒泡排序算法以及解决的几个小问题。

    package huawei.exam; public class BubbleSort { /** * @param args */ public static void main(String[] ...

  4. linux文件夹下载

    1.压缩文件夹 tar cvzf ./chinese.tar.gz /usr/share/fonts/chinese 2.下载 sz chinese.tar.gz

  5. Entity Framework Code-First(21):Automated Migration

    Automated Migration: Entity framework 4.3 has introduced Automated Migration so that you don't have ...

  6. 形式化方法的逆袭——如何找出Timsort算法和玉兔月球车中的Bug?

    https://bindog.github.io/blog/2015/03/30/use-formal-method-to-find-the-bug-in-timsort-and-lunar-rove ...

  7. 存储过程自动更新ID

    DECLARE @i int --更新题序编号 UPDATE UserAnswer SET @i=@i+,TestOrder=@i WHERE UserScoreID=' //根据ID 累加更新

  8. zen coding

    zen-Coding是一款快速编写HTML,CSS(或其他格式化语言)代码的编辑器插件,这个插件可以用缩写方式完成大量重复的编码工作,是web前端从业者的利器. zen-Coding插件支持多种编辑器 ...

  9. AngularJs 指令 directive中link,controller 的区别

    其实严格来讲,link和controller是完全不同的概念,这里讲区别有点牵强. angular指令中,带有link和controller两个函数,很多人在写指令的时候不知道是写在link里 还是c ...

  10. Liunx配置静态IP

    刚开始Linux默认的是动态获取,而我们需要设置静态IP(我是为了xshell的连接) 1.  执行dhclient命令自动获取到一个IP,NETMASK, 2.  执行route命令,获取defau ...