NumPy是一个Python包,提供快速,灵活和富有表现力的数据结构,旨在使处理“关系”或“标记”数据既简单又直观。它旨在成为在Python中进行实际的现实世界数据分析的基本高级构建块。
NumPy Basic
1、获取numpy版本并显示numpy构建配置
编写一个NumPy程序来获取numpy版本并显示numpy构建配置。
import numpy as np print(np.__version__) # 注意这里是两条下划线 print(np.show_config()) ''' 1.20.3 blas_mkl_info: libraries = ['mkl_rt'] library_dirs = ['D:/Anaconda\\Library\\lib'] define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)] include_dirs = ['D:/Anaconda\\Library\\include'] blas_opt_info: libraries = ['mkl_rt'] library_dirs = ['D:/Anaconda\\Library\\lib'] define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)] include_dirs = ['D:/Anaconda\\Library\\include'] lapack_mkl_info: libraries = ['mkl_rt'] library_dirs = ['D:/Anaconda\\Library\\lib'] define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)] include_dirs = ['D:/Anaconda\\Library\\include'] lapack_opt_info: libraries = ['mkl_rt'] library_dirs = ['D:/Anaconda\\Library\\lib'] define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)] include_dirs = ['D:/Anaconda\\Library\\include'] None '''
2、获取有关add函数的帮助
编写一个NumPy程序来获取有关add函数的帮助。
import numpy as np print(np.info(np.add))
3、测试给定数组的任何元素是否都不为零
编写一个NumPy程序来测试给定数组的任何元素是否都不为零。
只要有一个元素为0,则结果就为False
import numpy as np x = np.array([1, 2, 3, 4]) print("Original array:") print(x) print("Test if none of the elements of the said array is zero:") print(np.all(x)) x = np.array([0, 1, 2, 3]) print("Original array:") print(x) print("Test if none of the elements of the said array is zero:") print(np.all(x))
这里涉及python当中的all函数:
any()实现了或(OR)运算,而all()实现了与(AND)运算。
【1】对于any(iterables),如果可迭代对象iterables中任意存在每一个元素为True则返回True。特例:若可迭代对象为空,比如空列表[],则返回False。
【2】对于all(iterables),如果可迭代对象iterables中所有元素都为True则返回True。特例:若可迭代对象为空,比如空列表[],则返回True。
4、测试给定数组的任何元素是否为非零
只要有一个元素非零,则得到的结果为True.
import numpy as np x = np.array([0, 0, 0, 0]) print("Original array:") print(x) print("Test whether any of the elements of a given array is non-zero:") print(np.any(x)) x = np.array([0, 0, 2, 0]) print("Original array:") print(x) print("Test whether any of the elements of a given array is non-zero:") print(np.any(x))
这里涉及python当中的any函数:
any()实现了或(OR)运算,而all()实现了与(AND)运算。
【1】对于any(iterables),如果可迭代对象iterables中任意存在每一个元素为True则返回True。特例:若可迭代对象为空,比如空列表[],则返回False。
【2】对于all(iterables),如果可迭代对象iterables中所有元素都为True则返回True。特例:若可迭代对象为空,比如空列表[],则返回True。
5、逐元素测试给定数组的有限性
编写一个 NumPy 程序来测试给定数组元素的有限性(不是无穷大或不是数字)。
import numpy as np a = np.array([1, 0, np.nan, np.inf]) print("Original array") print(a) print("Test a given array element-wise for finiteness :") print(np.isfinite(a))
【1】math.isfinite():是数学模块的库方法,用于检查给定数是否为有限数,它接受数字(整数/浮点数,有限,无限或NaN)。如果 number 是有限数字(或可转换为有限数字),那么返回 true。否则,如果 number 是 NaN(非数字),或者是正、负无穷大的数,则返回 false。
【2】np.nan:表示not a number
【3】np.inf :表示+∞,是没有确切的数值的,类型为浮点型
6、逐元素测试正无穷大或负无穷大
编写一个 NumPy 程序来逐个元素测试正无穷大或负无穷大
import numpy as np a = np.array([1, 0, np.nan, np.inf]) print("Original array") print(a) print("Test element-wise for positive or negative infinity:") print(np.isinf(a)) ''' Original array [ 1. 0. nan inf] Test element-wise for positive or negative infinity: [False False False True] '''
【1】np.isinf(x):判断x数组当中是否有正无穷大或者负无穷大的数,返回值是布尔类型的list
7、逐元素测试给定数组的 NaN
编写一个 NumPy 程序来逐个元素测试给定数组的 NaN
import numpy as np a = np.array([1, 0, np.nan, np.inf]) print("Original array") print(a) print("Test element-wise for NaN:") print(np.isnan(a)) ''' Original array [ 1. 0. nan inf] Test element-wise for NaN: [False False True False] '''
【1】np.isnan(x):判断x数组当中是否有Nan值,返回值是布尔类型的list
8、逐元素测试给定数组的复数、实数
编写一个 NumPy 程序来逐个元素测试给定数组的复数、实数。还要测试给定数字是否为标量类型。
【1】np.iscomplex(a):测试a数组当中是否存在复数,返回值是布尔类型的list
【2】np.isreal(a):测试a数组当中是否存在实数,返回值是布尔类型的list
【3】np.isscalar(3.1):测试3.1是否是标量,返回值是布尔类型
import numpy as np a = np.array([1+1j, 1+0j, 4.5, 3, 2, 2j]) print("Original array") print(a) print("Checking for complex number:") print(np.iscomplex(a)) print("Checking for real number:") print(np.isreal(a)) print("Checking for scalar type:") print(np.isscalar(3.1)) print(np.isscalar([3.1]))
9、创建两个给定数组的元素比较
编写一个NumPy程序来创建两个给定数组的元素比较(更大,greater_equal,更少和less_equal)。
import numpy as np x = np.array([3, 5]) y = np.array([2, 5]) print("Original numbers:") print(x) print(y) print("Comparison - greater") print(np.greater(x, y)) print("Comparison - greater_equal") print(np.greater_equal(x, y)) print("Comparison - less") print(np.less(x, y)) print("Comparison - less_equal") print(np.less_equal(x, y)) ''' Original numbers: [3 5] [2 5] Comparison - greater [ True False] Comparison - greater_equal [ True True] Comparison - less [False False] Comparison - less_equal [False True] '''
【1】np.greater(x, y):判断x是否大于y
【2】np.greater_equal(x, y):判断x是否大于等于y
【3】np.less(x, y):判断x是否小于y
【4】np.less_equal(x, y):判断x是否小于等于y
10、创建数组,并确定数组占用的内存大小
编写一个NumPy程序来创建一个值为1,7,13,105的数组,并确定数组占用的内存大小。
import numpy as np X = np.array([1, 7, 13, 105]) print("Original array:") print(X) print("Size of the memory occupied by the said array:") print("%d bytes" % (X.size * X.itemsize)) ''' Original array: [ 1 7 13 105] Size of the memory occupied by the said array: 32 bytes '''
【1】X.size:求数组X当中的元素个数
【2】X.itemsize:X数组中一个元素的长度(字节)
11、创建从 30 到 70 的整数数组
import numpy as np array=np.arange(30,71) print("Array of the integers from 30 to70") print(array)
12、创建3x3单位矩阵
编写一个NumPy程序来创建一个3x3单位矩阵。
import numpy as np array_2D=np.identity(3) print('3x3 matrix:') print(array_2D)
13、创建包含从30到70的所有偶数整数的数组
编写一个NumPy程序来创建一个包含从30到70的所有偶数整数的数组。
import numpy as np array=np.arange(30,71,2) print("Array of all the even integers from 30 to 70") print(array)
14、创建由10个0,10个1,10个5组成的数组
编写一个NumPy程序来分别创建一个包含10个0,10个1,10个5的数组。
import numpy as np array=np.zeros(10) print("An array of 10 zeros:") print(array) array=np.ones(10) print("An array of 10 ones:") print(array) array=np.ones(10)*5 print("An array of 10 fives:") print(array) ''' An array of 10 zeros: [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] An array of 10 ones: [ 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.] An array of 10 fives: [ 5. 5. 5. 5. 5. 5. 5. 5. 5. 5.] '''
15、使用并迭代创建一个3X4数组
编写一个NumPy程序来创建一个3x4矩阵,其中填充了从10到21的值。
import numpy as np a = np.arange(10,22).reshape((3, 4)) print("Original array:") print(a) print("Each element of the array is:") for x in np.nditer(a): print(x,end=" ") ''' Original array: [[10 11 12 13] [14 15 16 17] [18 19 20 21]] Each element of the array is: 10 11 12 13 14 15 16 17 18 19 20 21 '''
【1】nditer:使用nditer可以完成逐个访问数组中的元素。
【2】end=" ":表示循环输出的元素后面以空格进行分割。