Python 科学计算库:Numpy介绍和使用

一、Numpy的作用

(1)对于同样的数值计算任务,由于NumPy能够直接对数组和矩阵进行操作,可以省略很多循环语句使用NumPy要比直接编写Python代码便捷得多;
(2)NumPy中数组的存储效率和输入输出性能均远远优于Python中等价的基 本数据结构;
(3)NumPy的大部分代码都是用C语言写成的,这使得NumPy比纯Python代 码高效得多。

二、 NumPy是什么

(1)NumPy的全名为Numeric Python,是一个开源的Python科学计算库,它包括:
• 一个强大的N维数组对象ndrray;
• 比较成熟的函数库;
• 用于整合C/C++和Fortran代码的工具包;
• 实用的线性代数、傅里叶变换和随机数生成函数
(2)NumPy支持高维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

1、普通python方法求和

a = []
b = []
c = []
for i in range(3):a.append(i**2)b.append(i**3)c.append(a[i]+b[i])
print(c)

2、用numpy求和

import numpy as np
def numpySun(n):'''np.arange(start,end,step,type)start:开始位置end:结束位置step:步长type:numpy数组的数据类型:param n::return:'''a = np.arange(0,n,1,np.int64) ** 2b = np.arange(0,n,1,np.int64) ** 3c = a + breturn c
c = numpySun(1292)
print(c)

3、 普通python和numpy效率对比

import numpy as np
from datetime import datetime
# import time
def create(n,m):a = []for i in range(n):a.append(i**m)return adef pythonSum(n):a = create(n,2)b = create(n,3)c = []for i in range(n):c.append(a[i]+b[i])return cstart = datetime.now()
result = pythonSum(100000)
totaltime = datetime.now() - start
print(result)
print(totaltime.microseconds)def numpy1(n):a = np.arange(0,n,1,np.int64) ** 2b = np.arange(0,n,1,np.int64) ** 3c = a+breturn c
start1 = datetime.now()
result2 = numpy1(100000)
totaltime = datetime.now() - start1
print(result2)
print(totaltime.microseconds)

标准Python的缺陷:

标准安装的Python中用列表(list)可以用来当作数组使用,但是列表中所保存的是对象 (任意对象)的指针。对于数值运算来说这种结构显然比较浪费内存和CPU计算时间。
Python还提供了一个array模块,它直接保存数值。但是由于它只支持一维数组,也没有各种运算函数,因此也不适合做数值运算。
NumPy提供了以下对象,解决标准Python的不足:
•ndarray( N-dimensional array object)N维数组(简称数组)对象,存储单一数
据类型的N维数组
•ufunc( universal function object)通用函数对象,对数组进行处理的函数。

三、numpy运用

import numpy as np# 创建numpy数据的几种方法'''
 1、arange()
np.arange(start,end,step,type)
start:开始位置
end:结束位置
step:步长
type:numpy数组的数据类型
:param n:
:return:
'''
a = np.arange(5)
# print(a)
# 查看numpy数组的数据类型
print(a.dtype)'''
2、利用python列表创建numpy数据
    np.array(list)
    list:python 的列表
'''
price = [12.5, 5.5, 7.0, 13]
price2 = np.array(price)
print(price2)
print(price2.dtype)'''
3、创建一个从a-b范围内取n个点等间距分布的数组
     a = 0
     b = 10 
     n = 4
     np.linspace(start,end,points,endpoint)
     start:开始
     end:结束
     points:在start和end之间取的点的个数
     endpoint: 创建出的数组是否包含end结束位置,取值为True/False
'''
c = np.linspace(0, 10, 4, endpoint=False)
print(c)# 查看数组的形状 shape
# (4,) 代表一维
print(c.shape)d2 = np.array([[1,2,3,4],
               [5,6,7,8]])
print(d2.shape)'''
创建二维数组
'''d2 = np.array([[1,2,3,4],
               [5,6,7,8]])d2_1 = np.array([np.arange(5),np.arange(5,10)])
print(d2_1)
创建特殊的数组:# 1、例如:创建值全为0的2行2列和2行一维数组
zeros = np.zeros((2, 2))
zeros1 = np.zeros((2,))
print(zeros)
print(zeros1)# 2、创建3行3列值全为1的数组
ones = np.ones((3, 3))
print(ones)# 3、创建一个多维的值全为指定某个值得数组
# 例如:2行2列,值全为10的数组
full = np.full((2, 2), 10)
print(full)# 4、创建对角矩阵  注意:对角矩阵必须是方阵,即行数和列数相等
eye = np.eye(2)
print(eye)# 将方阵的对角线上的1向右上角或者是左下角移动
eye2 = np.eye(3,k=1)
print(eye2)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部