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

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

16、计算正弦曲线上点的x和y坐标并绘制


编写一个 NumPy 程序来计算正弦曲线上点的 x 和 y 坐标,并使用 matplotlib 绘制这些点。

import numpy as np
import matplotlib.pyplot as plt
# Compute the x and y coordinates for points on a sine curve
x = np.arange(0, 3 * np.pi, 0.2)
y = np.sin(x)
print("Plot the points using matplotlib:")
plt.plot(x, y)
plt.show()
# 得到的x数据:
[0.  0.2 0.4 0.6 0.8 1.  1.2 1.4 1.6 1.8 2.  2.2 2.4 2.6 2.8 3.  3.2 3.4
 3.6 3.8 4.  4.2 4.4 4.6 4.8 5.  5.2 5.4 5.6 5.8 6.  6.2 6.4 6.6 6.8 7.
 7.2 7.4 7.6 7.8 8.  8.2 8.4 8.6 8.8 9.  9.2 9.4]

【1】np.sin(x): 表示对x元素取正弦

【2】我们做出来的x是离散的点,可以看到这里用plt.plot(x, y)把离散的点变成了光滑的曲线

【3】np.pi:就是π(3.1415926…)

e2be36b0a11d42cba8f17fc8c6f2c724.png



17、查找给定数组中缺少的数据


编写一个NumPy程序来查找给定数组中缺少的数据。这题和第七题是一样的,都是使用isnan函数。

17、查找给定数组中缺少的数据
编写一个NumPy程序来查找给定数组中缺少的数据。这题和第七题是一样的,都是使用isnan函数。


18、检查两个数组是否相等


编写一个NumPy程序来检查两个数组是否相等。

import numpy as np
nums1 = np.array([0.5, 1.5, 0.2])
nums2 = np.array([0.4999999999, 1.500000000, 0.2])
np.set_printoptions(precision=15)
print("\nTest said two arrays are equal (element wise) or not:?")
print(nums1 == nums2)
'''
Test said two arrays are equal (element wise) or not:?
[False  True  True]
'''
nums1 = np.array([0.5, 1.5, 0.23])
nums2 = np.array([0.4999999999, 1.5000000001, 0.23])
print("\nOriginal arrays:")
np.set_printoptions(precision=15)
print("\nTest said two arrays are equal (element wise) or not:?")
print(np.equal(nums1, nums2))
'''
Test said two arrays are equal (element wise) or not:?
[False False  True]
'''

【1】nums1 == nums2:可以直接比较各个元素是否相等

【2】np.set_printoptions:用于控制Python中小数的显示精度

【3】np.equal(nums1, nums2):equals()方法用于验证数据是否等效


==和equal的区别

【1】这题当中可以看到,使用==和equals返回值都是一个布尔类型的list

【2】关于在pandas中的区别,看这篇文章: ==和equal的区别


19、创建从正态分布当中选的随机数组


创建一个形状为(10,4)的随机数的二维数组,从正态分布(200,7)中选择随机数。

import numpy as np 
np.random.seed(20) 
cbrt = np.cbrt(7) # 开立方根
nd1 = 200 
print(cbrt * np.random.randn(10, 4) + nd1) 
'''
[[201.6908267  200.37467631 200.68394275 195.51750123]
 [197.92478992 201.07066048 201.79714021 198.1282331 ]
 [200.96238963 200.77744291 200.61875865 199.05613894]
 [198.48492638 198.38860811 197.55239946 200.47003621]
 [199.91545839 202.99877319 202.01069857 200.77735483]
 [199.67739161 193.89831807 202.14273593 202.54951299]
 [199.53450969 199.7512602  199.79145727 202.97687757]
 [200.24634413 196.04606934 198.30611253 197.88701546]
 [201.78450912 203.94032834 198.21152803 196.91446071]
 [201.0082481  197.03285104 200.63052763 197.82590294]]
'''

【1】np.random.seed(int):用于制定随机数生成时所用算法开始的整数值,使得随机数据可预测。如果使用相同的seed()值,则每次产生的随机数都相同;如果不设置这个值,则系统根据时间来自己选择这个值,因此每次生成的随机数会因为时间差异而不同。

【2】numpy.random.rand(d0,d1,…,dn):randn函数返回一个或一组样本,具有标准正态分布。dn表示每个维度,返回值为指定维度的array。np.random.randn(10, 4) 表示生成二维数组,有10行4列。

【3】numpy.cbrt(x):立方根。


20、按行和列升序对给定数组进行排序


编写一个NumPy程序,按行和列升序对给定数组进行排序。

import numpy as np  
nums = np.array([[5.54, 3.38, 7.99],
              [3.54, 4.38, 6.99],
              [1.54, 2.39, 9.29]])
print("Original array:")
print(nums)
print("\nSort the said array by row in ascending order:")
print(np.sort(nums)) # 按行排序
print("\nSort the said array by column in ascending order:")
print(np.sort(nums, axis=0)) # 按列排序
'''
Original array:
[[5.54 3.38 7.99]
 [3.54 4.38 6.99]
 [1.54 2.39 9.29]]
Sort the said array by row in ascending order:
[[3.38 5.54 7.99]
 [3.54 4.38 6.99]
 [1.54 2.39 9.29]]
Sort the said array by column in ascending order:
[[1.54 2.39 6.99]
 [3.54 3.38 7.99]
 [5.54 4.38 9.29]]
'''

【1】np.sort(a, axis, kind, order) :对数组进行排序。

axis=1 是按照最后一个轴排序,axis=0 每一列各元素排序 axis=1 每一行各元素排序,默认-1 是按最后一个轴排序。


21、从给定数组中提取小于和大于指定数的数字


编写一个NumPy程序,从给定数组中提取所有小于和大于指定数字的数字。

import numpy as np  
nums = np.array([[5.54, 3.38, 7.99],
              [3.54, 4.38, 6.99],
              [1.54, 2.39, 9.29]])
print("Original array:")
print(nums)
n = 5
print("\nElements of the said array greater than",n)
print(nums[nums > n]) # 找出所有大于5的元素,返回array
n = 6
print("\nElements of the said array less than",n)
print(nums[nums < n]) # 找出所有小于6的元素,返回array
'''
Original array:
[[5.54 3.38 7.99]
 [3.54 4.38 6.99]
 [1.54 2.39 9.29]]
Elements of the said array greater than 5
[5.54 7.99 6.99 9.29]
Elements of the said array less than 6
[5.54 3.38 3.54 4.38 1.54 2.39]
'''

这里应该也是使用了布尔索引


22、创建与原数组相同形状和数据类型的数组


编写一个NumPy程序来创建给定数组的相同形状和数据类型的数组。用 0.0 填充新数组。

import numpy as np  
nums = np.array([[5.54, 3.38, 7.99],
              [3.54, 8.32, 6.99],
              [1.54, 2.39, 9.29]])
print("Original array:")
print(nums)
print("\nNew array of equal shape and data type of the said array filled by 0:")
print(np.zeros_like(nums))


【1】np.zeros_like(nums)函数:主要是想实现构造一个矩阵W_update,其维度与矩阵W一致,并为其初始化为全0;这个函数方便的构造了新矩阵,无需参数指定shape大小。


23、以相反的顺序交换给定数组的行和列


编写一个NumPy程序,以相反的顺序交换给定数组的行和列。

import numpy as np
nums = np.array([[[1, 2, 3, 4],
               [0, 1, 3, 4],
               [90, 91, 93, 94],
               [5, 0, 3, 2]]])
print("Original array:")
print(nums)
print("\nSwap rows and columns of the said array in reverse order:")
new_nums = print(nums[::-1, ::-1])
print(new_nums)
'''
Original array:
[[[ 1  2  3  4]
  [ 0  1  3  4]
  [90 91 93 94]
  [ 5  0  3  2]]]
Swap rows and columns of the said array in reverse order:
[[[ 5  0  3  2]
  [90 91 93 94]
  [ 0  1  3  4]
  [ 1  2  3  4]]]
None
'''

【1】关于[::-1]

fea8fc3a80c3447c8ac14da74851c77e.png

【2】关于[::-1, ::-1]

import numpy as np
a=np.random.rand(5)
print(a)
[ 0.64061262  0.8451399   0.965673    0.89256687  0.48518743]
print(a[-1]) ###取最后一个元素
[0.48518743]
print(a[:-1])  ### 除了最后一个取全部
[ 0.64061262  0.8451399   0.965673    0.89256687]
print(a[::-1]) ### 取从后向前(相反)的元素
[ 0.48518743  0.89256687  0.965673    0.8451399   0.64061262]
print(a[2::-1]) ### 取从下标为2的元素翻转读取
[ 0.965673  0.8451399   0.64061262]


24、将两个相同大小的给定数组逐个元素相乘


编写一个NumPy程序,将两个相同大小的给定数组逐个元素相乘。

import numpy as np 
nums1 = np.array([[2, 5, 2],
              [1, 5, 5]])
nums2 = np.array([[5, 3, 4],
              [3, 2, 5]])
print("Array1:") 
print(nums1)
print("Array2:") 
print(nums2)
print("\nMultiply said arrays of same size element-by-element:")
print(np.multiply(nums1, nums2))


【1】multiply(a,b):表示乘法,如果a,b是两个数组,那么对应元素相乘


25、转换给定数组


编写一个NumPy程序来创建一个给定形状(5,6)和类型的新数组,并用零填充。

更改以下格式的所述数组:

给定数组:

[[0 0 0 0 0 0 0]
[0 0 0 0 0 0]
[0 0 0 0 0 0]
[0 0 0 0 0 0]
[0 0 0 0 0 0]]

新数组:

[[3 0 3 0 3 0]
[7 0 7 0 7 0]
[3 0 3 0 3 0]
[7 0 7 0 7 0]
[3 0 3 0 3 0]]
import numpy as np
nums = np.zeros(shape=(5, 6), dtype='int')
print("Original array:")
print(nums)
nums[::2, ::2] = 3
nums[1::2, ::2] = 7
print("\nNew array:")
print(nums)
'''
Original array:
[[0 0 0 0 0 0]
 [0 0 0 0 0 0]
 [0 0 0 0 0 0]
 [0 0 0 0 0 0]
 [0 0 0 0 0 0]]
New array:
[[3 0 3 0 3 0]
 [7 0 7 0 7 0]
 [3 0 3 0 3 0]
 [7 0 7 0 7 0]
 [3 0 3 0 3 0]]
'''

cee0b1737d564c6d93c702c7a4af1c2f.png2a7675b058b94a9abe432077a9efb25c.png



相关文章
|
1月前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
Pandas 和 NumPy 是 Python 中不可或缺的数据处理和分析工具。本文通过实际案例深入剖析了 Pandas 的数据清洗、NumPy 的数组运算、结合两者进行数据分析和特征工程,以及 Pandas 的时间序列处理功能。这些高级技巧能够帮助我们更高效、准确地处理和分析数据,为决策提供支持。
42 2
|
1月前
|
存储 数据处理 Python
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第27天】在科学计算和数据分析领域,Python凭借简洁的语法和强大的库支持广受欢迎。NumPy和SciPy作为Python科学计算的两大基石,提供了高效的数据处理和分析工具。NumPy的核心功能是N维数组对象(ndarray),支持高效的大型数据集操作;SciPy则在此基础上提供了线性代数、信号处理、优化和统计分析等多种科学计算工具。结合使用NumPy和SciPy,可以显著提升数据处理和分析的效率,使Python成为科学计算和数据分析的首选语言。
43 3
|
1月前
|
数据采集 数据可视化 数据处理
如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`)
本文介绍了如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`),加载历史数据,计算均线和其他技术指标,实现交易逻辑,记录和可视化交易结果。示例代码展示了如何根据均线交叉和价格条件进行开仓、止损和止盈操作。实际应用时需注意数据质量、交易成本和风险管理。
67 5
|
1月前
|
存储 机器学习/深度学习 算法
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第26天】NumPy和SciPy是Python科学计算领域的两大核心库。NumPy提供高效的多维数组对象和丰富的数学函数,而SciPy则在此基础上提供了更多高级的科学计算功能,如数值积分、优化和统计等。两者结合使Python在科学计算中具有极高的效率和广泛的应用。
62 2
|
2月前
|
搜索推荐 Python
Leecode 101刷题笔记之第五章:和你一起你轻松刷题(Python)
这篇文章是关于LeetCode第101章的刷题笔记,涵盖了多种排序算法的Python实现和两个中等难度的编程练习题的解法。
24 3
|
2月前
|
机器学习/深度学习 并行计算 大数据
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧2
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
91 10
|
2月前
|
机器学习/深度学习 数据采集 算法
探索Python科学计算的边界:NumPy、Pandas与SciPy在大规模数据分析中的高级应用
【10月更文挑战第5天】随着数据科学和机器学习领域的快速发展,处理大规模数据集的能力变得至关重要。Python凭借其强大的生态系统,尤其是NumPy、Pandas和SciPy等库的支持,在这个领域占据了重要地位。本文将深入探讨这些库如何帮助科学家和工程师高效地进行数据分析,并通过实际案例来展示它们的一些高级应用。
61 0
探索Python科学计算的边界:NumPy、Pandas与SciPy在大规模数据分析中的高级应用
|
2月前
|
机器学习/深度学习 算法 数据挖掘
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧1
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
58 5
|
2月前
|
机器学习/深度学习 算法 数据可视化
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧2
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
43 1
|
2月前
|
数据挖掘 索引 Python
Python数据分析篇--NumPy--进阶
Python数据分析篇--NumPy--进阶
21 0