Python刷题系列(1)_NumPy Basic(上)

简介: NumPy是一个Python包,提供快速,灵活和富有表现力的数据结构,旨在使处理“关系”或“标记”数据既简单又直观。它旨在成为在Python中进行实际的现实世界数据分析的基本高级构建块。

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。

aac71d911e71440c9d2cf52284938251.png82cf65cb49da4ad68142a99be0a90a2b.png



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。

a5ba85ef8a9e496a89b40609a73a26e9.png



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))

e1a5f51a46d1422fb0bcffac3547fece.png


【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

0410eb53a1dc43d99968e74b50b7f660.png



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)

7d8670390dc54094899c8d790e057b8a.png


12、创建3x3单位矩阵


编写一个NumPy程序来创建一个3x3单位矩阵。

import numpy as np
array_2D=np.identity(3)
print('3x3 matrix:')
print(array_2D)

image.png


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.]     
'''

ba596c2d93e642499b98fe2adf2f58e1.png46912743032d44f8888b80db6795e566.pngce65bc23b52e4dffbd81102d117198ba.png


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=" ":表示循环输出的元素后面以空格进行分割。

75607aa984dc43caacbc474b82ea429f.png


相关文章
|
29天前
|
机器学习/深度学习 存储 算法
Python中的NumPy库:数值计算与科学计算的基石
【2月更文挑战第29天】NumPy是Python科学计算的核心库,专注于高效处理大型多维数组和矩阵。其核心是ndarray对象,提供快速数组操作和数学运算,支持线性代数、随机数生成等功能。NumPy广泛应用于数据处理、科学计算和机器学习,简化了矩阵运算、统计分析和算法实现,是数据科学和AI领域的重要工具。
|
1月前
|
存储 索引 Python
请解释Python中的NumPy库以及它的主要用途。
【2月更文挑战第27天】【2月更文挑战第97篇】请解释Python中的NumPy库以及它的主要用途。
|
1月前
|
机器学习/深度学习 数据挖掘 索引
Python数据分析(一)—— Numpy快速入门
Python数据分析(一)—— Numpy快速入门
|
2月前
|
存储 索引 Python
一文掌握python数组numpy的全部用法(零基础学python(二))
一文掌握python数组numpy的全部用法(零基础学python(二))
28 0
|
25天前
|
机器学习/深度学习 数据挖掘 Python
NumPy的基本操作(Python)
NumPy的基本操作(Python)
30 4
|
1月前
|
Python
Numpy(Numerical Python)是一个用于处理大型多维数组和矩阵的Python库
【2月更文挑战第28天】Numpy(Numerical Python)是一个用于处理大型多维数组和矩阵的Python库
21 1
|
2月前
|
数据库 索引 Python
python数据库-NumPy与Matplotlib库
python数据库-NumPy与Matplotlib库
|
算法 数据挖掘 索引
Python刷题系列(1)_NumPy Basic(下)
NumPy是一个Python包,提供快速,灵活和富有表现力的数据结构,旨在使处理“关系”或“标记”数据既简单又直观。它旨在成为在Python中进行实际的现实世界数据分析的基本高级构建块。
Python刷题系列(1)_NumPy Basic(下)
|
8天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
8天前
|
程序员 开发者 Python
Python网络编程基础(Socket编程) 错误处理和异常处理的最佳实践
【4月更文挑战第11天】在网络编程中,错误处理和异常管理不仅是为了程序的健壮性,也是为了提供清晰的用户反馈以及优雅的故障恢复。在前面的章节中,我们讨论了如何使用`try-except`语句来处理网络错误。现在,我们将深入探讨错误处理和异常处理的最佳实践。