NumPy(Numerical Python)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
我使用的是windows系统利用python自带的pip这个功能在cmd中输入pip install numpy等待一段时间即可。
Numpy中的数组类型,numpy在运算中数组运算优于列表list容器。
numpy中的ndarray是一个多维的数组对象:包含实际的数据,描述数据的元数据大部分的数组操作仅仅是修改原数组部分,不改变底层的实际数据。
我们可以直接将数组看作一种新的数据类型,就像list、tuple、dict一样,但数组中所有元素的类型必须是一致的,Python支持的数据类型有整型、浮点型以及复数型,但这些类型不足以满足科学计算的需求,因此NumPy中添加了许多其他的数据类型,如bool、inti、int64、float32、complex64等。同时,它也有许多其特有的属性和方法。
元数据主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。其最本质、最抽象的定义为:data about data ,是一种广泛存在的现象,在许多领域有其具体的定义和应用。
import numpy as np将numpy重新命名为np

1.创建数组:np.array():从列表、元组或其他可迭代对象创建数组。np.zeros():创建一个指定形状的零数组。np.ones():创建一个指定形状的全1数组。np.eye():创建一个单位矩阵。np.random.random():创建一个指定形状的随机数数组。np.linspace():在指定范围内创建一组等间隔的数字。np.arange():在指定范围内创建一组等间隔的数字。2.数组操作:np.reshape():将数组重塑为指定形状。np.concatenate():连接两个或多个数组。np.split():将数组分割成多个子数组。np.transpose():转置数组。np.sort():对数组进行排序。np.argmax():返回数组中最大值的索引。np.argmin():返回数组中最小值的索引。3.数学运算:np.add():对两个数组进行逐元素相加。np.subtract():对两个数组进行逐元素相减。np.multiply():对两个数组进行逐元素相乘。np.divide():对两个数组进行逐元素相除。np.power():将数组的每个元素提高到指定的幂。np.exp():计算数组中每个元素的指数。np.log():计算数组中每个元素的自然对数。4.统计方法:np.mean():计算数组的平均值。np.std():计算数组的标准差。np.var():计算数组的方差。np.max():返回数组中的最大值。np.min():返回数组中的最小值。np.median():计算数组的中位数。np.percentile():计算数组的百分位数。5.线性代数:np.dot():计算两个数组的点积。np.linalg.det():计算矩阵的行列式。np.linalg.eig():计算矩阵的特征值和特征向量。np.linalg.inv():计算矩阵的逆。np.linalg.norm():计算矩阵的范数。np.linalg.solve():解线性方程组。6.逻辑运算:np.logical_and():对两个数组进行逐元素逻辑与操作。np.logical_or():对两个数组进行逐元素逻辑或操作。np.logical_not():对数组进行逐元素逻辑非操作。np.where():根据条件从两个数组中返回元素。7.其他方法:np.unique():返回数组中的唯一元素。np.sum():计算数组的总和。np.prod():计算数组的乘积。np.any():如果数组中有任何元素为True,则返回True。np.all():如果数组中的所有元素都为True,则返回True。np.isnan():对于数组中的每个NaN值返回True。np.isinf():对于数组中的每个无穷大值返回True。hstack(tup),参数是一个元组 vstack不同的是,vstack将数组进行纵向合并c = np.hstack((a, b))np.split(a, 2, axis=1)
带上另外一个库可以看到图形:更直观了
import numpy as npimport matplotlib.pyplot as pltx = np.linspace(-5, 5, 256)y = np.sin(x**3)plt.plot(x, y)plt.show()
import matplotlib.pyplot as pltx_values = range(100)y_values = [((x / 100) - 0.5) ** 3for x in x_values]plt.plot(x_values, y_values)plt.title('Cubic Plot')plt.show()
NumPy可以与许多科学计算库兼容,一些包括:
使用NumPy创建了x数组作为自变量的值,用np.sin()函数计算y数组的相应的值,然后使用Matplotlib的plt.plot()函数将这些值绘制为线性图。最后,您使用 plt.show()来显示图形。所以,在这个例子中,NumPy和Matplotlib确实成功配合使用了。
#逐元素相乘 *print(A * B)print(np.multiply(A, B))#内积运算 点乘(.)x=np.dot(a,b,None)激活函数是一种在神经网络中常用的函数,用于将输入信号转换为输出信号。在神经网络中,每个神经元都有一个激活函数,它将输入信号加权求和后,通过激活函数进行非线性变换,得到输出信号。这个过程可以看作是神经元的"激活",因此这个函数被称为激活函数。def关键字来定义一个函数,该函数将接受输入并返回输出。这是因为激活函数需要将输入映射到输出,而自定义函数可以让您更灵活地控制这种映射。
sigmoid函数sigmoid函数是一种常用的激活函数,它将输入值映射到0到1之间的值。sigmoid函数的输出形状与输入形状相同,即对于任意形状的输入,sigmoid函数的输出形状也相同。sigmoid函数的定义如下:
defsigmoid(x):return1 / (1 + np.exp(-x))relu函数relu函数是一种常用的激活函数,它将所有小于0的元素替换为0,而大于等于0的元素保持不变。relu函数的输出形状也与输入形状相同,即对于任意形状的输入,relu函数的输出形状也相同。relu函数的定义如下:
defrelu(x):return np.maximum(0, x)softmax函数softmax函数是一种常用的激活函数,它将输入向量转换为概率分布。softmax函数的输出形状也与输入形状相同,即对于任意形状的输入,softmax函数的输出形状也相同。softmax函数的定义如下:
defsoftmax(x):return np.exp(x) / np.sum(np.exp(x))import numpy as npdefsigmoid(x):""" sigmoid函数的输出是将输入x应用于sigmoid函数的结果,sigmoid函数定义为1 / (1 + exp(-x)) """return1 / (1 + np.exp(-x))defrelu(x):""" relu函数的输出是将输入x应用于修正线性单元函数的结果,修正线性单元函数定义为np.maximum(0, x) """return np.maximum(0, x)defsoftmax(x):""" softmax函数的输出是将输入x应用于softmax函数的结果,softmax函数定义为np.exp(x) / np.sum(np.exp(x)) """return np.exp(x) / np.sum(np.exp(x))# 测试代码X = np.array([[1, 2, 3], [4, 5, 6]])print(f"Shape of input X: {X.shape}")print(f"Shape of sigmoid output: {sigmoid(X).shape}")print(f"Shape of relu output: {relu(X).shape}")print(f"Shape of softmax output: {softmax(X).shape}")在NumPy中,nan(Not a Number)通常表示缺失值或无效的数值。当你读取本地文件并将其解释为NumPy数组时,如果文件中包含缺失值(例如,空值或None),NumPy会将这些缺失值表示为nan。
例如,如果你使用numpy.genfromtxt等函数读取包含缺失值的文件,NumPy会将缺失值替换为nan。
import numpy as np# 从文件读取数据,缺失值将被替换为nandata = np.genfromtxt('your_file.csv', delimiter=',')处理nan的方法可以使用np.nan_to_num函数将其替换为指定值(列的1中位,平均值),也可以使用np.isnan函数判断后转化为None来处理,或者直接删除含有nan的数据。这样做可以避免在数据处理过程中报错或者出现意外的结果。
处理NumPy数组中的
nan值通常涉及到数据清洗和填充缺失值。
nan值:import numpy as npdata = np.array([[1.0, 2.0, np.nan], [4.0, np.nan, 6.0]])# 删除包含nan的行cleaned_data = data[~np.isnan(data).any(axis=1)]nan值:import numpy as npdata = np.array([[1.0, 2.0, np.nan], [4.0, np.nan, 6.0]])# 用特定值填充nanfilled_data = np.nan_to_num(data, nan=0.0)或者,你可以使用平均值、中位数等来填充nan:# 用列的均值填充nancol_means = np.nanmean(data, axis=0)data[np.isnan(data)] = np.take(col_means, np.isnan(data).nonzero()[1])import numpy as npfrom scipy.interpolate import interp1ddata = np.array([[1.0, 2.0, np.nan], [4.0, np.nan, 6.0]])# 线性插值interp = interp1d(np.arange(data.shape[1]), data, kind='linear', axis=1, fill_value="extrapolate")interpolated_data = interp(np.arange(data.shape[1]))选择哪种方法取决于你的数据和分析需求。清洗和处理缺失值时,确保你的方法不会引入不良影响,并且要根据具体情况调整。