首页 > 编程知识 正文

visual studio中python的numpy库调用不了

时间:2023-05-06 06:57:01 阅读:275477 作者:2872

1、NumPy数组对象

NumPy数组在数值运算方面的效率优于Python提供的list容器。

使用NumPy可以在代码中省去很多循环语句,因此其代码比等价的Python代码更为简洁。

2、动手实现:向量加法

 对两个向量 a 和 b 做加法。这里的向量即数学意义上的一维数组。

向量 a 的取值为0~n的整数的平方,例如 n 取3时,向量 a 为0、1或4。

向量 b 的取值为0~n的整数的立方,例如 n 取3时,向量 b 为0、1或8。

(1)、传统方法实现

#两个一维向量相加def pythonsum(n): #range函数创建从0到n的数组 a = list(range(n)) b = list(range(n)) c = [] for i in range(len(a)): #a[i]的值为i的平方 a[i] = i ** 2 #b[i]的值为i的立方 b[i] = i ** 3 c.append(a[i] + b[i]) return c'''a = range(n)不加list时报错TypeError: 'range' object does not support item assignment原因是python3中range不返回数组对象,而是返回range对象加个声明为list的语句就行,如: a = list(range(n))'''print(pythonsum(5))

 (2)、NumPy数组实现

# coding=utf-8#NumPy实现一维向量加法#表明该函数是从NumPy模块导入import numpydef numpysum(n): #使用NumPy中的arange函数来创建包含0~n的整数的NumPy数组 a = numpy.arange(n) ** 2 b = numpy.arange(n) ** 3 c = a + b return cprint(numpysum(5))

注意到:numpysum() 函数中没有使用 for 循环。

(3)、我们查看这两个函数的运行时间比较

# coding=utf-8from datetime import datetimeimport numpy as np#两个一维向量相加def pythonsum(n): #range函数创建从0到n的数组 a = list(range(n)) b = list(range(n)) c = [] for i in range(len(a)): #a[i]的值为i的平方 a[i] = i ** 2 #b[i]的值为i的立方 b[i] = i ** 3 c.append(a[i] + b[i]) return c#NumPy实现一维向量加法def numpysum(n): a = np.arange(n) ** 2 b = np.arange(n) ** 3 c = a + b return c'''a = range(n)不加list时报错TypeError: 'range' object does not support item assignment原因是python3中range不返回数组对象,而是返回range对象加个声明为list的语句就行,如: a = list(range(n))'''#以下程序打印出向量相加后的最后两个元素以及运行消耗的时间size = 1000start = datetime.now()print("开始时间为:",start.microsecond)c = pythonsum(size)end = datetime.now()print("结束时间为: ",end.microsecond)delta = end - start#print(c)print("相加后的最后两个元素是:",c[-2:])print("pythonsum函数以微秒为单位的已用时间:",delta.microseconds)start = datetime.now()print("开始时间为:",start.microsecond)c = numpysum(size)end = datetime.now()print("结束时间为: ",end.microsecond)delta = end - startprint("相加后的最后两个元素是:",c[-2:])print("numpysum函数以微秒为单位的已用时间:",delta.microseconds)

 运行结果:

开始时间为: 113683
结束时间为:  114680
相加后的最后两个元素是: [995007996, 998001000]
pythonsum函数以微秒为单位的已用时间: 997
开始时间为: 114680
结束时间为:  114680
相加后的最后两个元素是: [995007996 998001000]
numpysum函数以微秒为单位的已用时间: 0

显然,在微秒级,1000个数据的一维向量相加,NumPy函数几乎不消耗时间,课件NumPy代码比等价的纯Python代码运行速度快得多。

numpysum() 函数的输出不包含逗号。这是为什么呢?显然,我们使用的是NumPy数组,而非Python自身的list容器。正如前言中所述,NumPy数组对象以专用数据结构来存储数值。

本章小结

我们成功运行了向量加法程序,并以此证明了NumPy优异的性能。

一分快三大小单双位技巧准确率99 2 b = np.arange(n) ** 3 c = a + b return c'''a = range(n)不加list时报错TypeError: 'range' object does not support item assignment原因是python3中range不返回数组对象,而是返回range对象加个声明为list的语句就行,如: a = list(range(n))'''#以下程序打印出向量相加后的最后两个元素以及运行消耗的时间size = 1000start = datetime.now()print("开始时间为:",start.microsecond)c = pythonsum(size)end = datetime.now()print("结束时间为: ",end.microsecond)delta = end - start#print(c)print("相加后的最后两个元素是:",c[-2:])print("pythonsum函数以微秒为单位的已用时间:",delta.microseconds)start = datetime.now()print("开始时间为:",start.microsecond)c = numpysum(size)end = datetime.now()print("结束时间为: ",end.microsecond)delta = end - startprint("相加后的最后两个元素是:",c[-2:])print("numpysum函数以微秒为单位的已用时间:",delta.microseconds)

 运行结果:

开始时间为: 113683
结束时间为:  114680
相加后的最后两个元素是: [995007996, 998001000]
pythonsum函数以微秒为单位的已用时间: 997
开始时间为: 114680
结束时间为:  114680
相加后的最后两个元素是: [995007996 998001000]
numpysum函数以微秒为单位的已用时间: 0

显然,在微秒级,1000个数据的一维向量相加,NumPy函数几乎不消耗时间,课件NumPy代码比等价的纯Python代码运行速度快得多。

numpysum() 函数的输出不包含逗号。这是为什么呢?显然,我们使用的是NumPy数组,而非Python自身的list容器。正如前言中所述,NumPy数组对象以专用数据结构来存储数值。

本章小结

我们成功运行了向量加法程序,并以此证明了NumPy优异的性能。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。