np.newaxis的用法、np.newaxis的用法、 fit,norm,hist的使用、get_dummies ()用法

本文详细介绍了numpy库中的np.newaxis用法,展示了如何通过增加轴来改变数组形状。接着,讨论了np.argsort()函数在排序数组中的应用。此外,通过实例演示了如何绘制正态分布图,包括fit、norm、hist、kde等参数的使用。最后,提到了pandas的get_dummies()函数在处理离散特征时的one-hot编码过程,用于将分类数据转化为数值型数据。

文章目录



一、np.newaxis的用法

np.newaxis的作用就是在这一位置增加一个一维,这一位置指的是np.newaxis所在的位置,比较抽象。我们举一个例子:

array=np.random.rand(3,4)

array

输出为:

array([[0.8673345 , 0.87058519, 0.20251628, 0.72928923],
       [0.4078268 , 0.6191882 , 0.97035328, 0.82620661],
       [0.42866612, 0.22471408, 0.96583487, 0.0179457 ]])

对其进行增加维度操作:

array_axis=array[:,np.newaxis]
array_axis

输出为:

array([[[0.8673345 , 0.87058519, 0.20251628, 0.72928923]],

       [[0.4078268 , 0.6191882 , 0.97035328, 0.82620661]],

       [[0.42866612, 0.22471408, 0.96583487, 0.0179457 ]]])



二、np.argsort的用法

功能: 将矩阵a按照axis排序,并返回排序后的下标
参数: a:输入矩阵, axis:需要排序的维度
返回值: 输出排序后的下标

import numpy as np
x = np.array([3,2,5,-1,0,-2])
x.argsort()

输出:

array([5, 3, 4, 1, 0, 2], dtype=int64)

 三、正态分布图的使用

我们假设有10个随机数

x=np.random.randn(100)
x

输出:

array([-2.19357637,  1.03864796, -0.95104507, -0.1690344 ,  0.29648262,
       -0.7640752 ,  0.15905589,  2.07249912,  0.70312816,  0.80070306,
        1.29612653, -2.63874574, -0.26189042,  2.12564216,  0.56861835,
       -0.18943274, -0.75601323,  1.38344496, -0.50702103, -0.22910088,
        0.20479167, -0.61120173, -0.20090225,  1.43568298,  2.61950641,
        0.09446892, -0.07709098,  0.2491735 , -0.80481997,  0.58523034,
        1.16017998,  0.4407353 , -0.71009153,  0.55810077,  0.05271944,
        0.43614988, -1.21586415, -1.17084382, -0.58393395,  0.55245063,
        0.56418961,  0.57940085,  0.40388583,  0.34791926, -0.27173782,
        0.59384357,  0.77583612,  1.79353976,  0.0375357 , -1.16605167,
        1.13151166, -0.09720373, -1.24091957, -0.93924176, -0.30345863,
        0.69050871, -1.46066651, -1.49576727,  0.14752057,  1.65639365,
       -0.49901977, -2.7017122 ,  0.65861852, -0.58167033,  0.07877699,
        1.41603824,  1.68265432, -0.48303618, -0.63860605,  0.56478839,
       -1.1148248 , -0.17799165, -2.0899294 ,  1.03159286, -0.25805355,
        1.53186054,  0.4414223 , -0.86584869, -0.18172099, -0.59000996,
        1.02228194, -0.67097503, -0.738751  , -0.69504748,  0.19968444,
       -0.1421462 , -0.1564683 , -0.25207852, -0.14746825, -0.11764128,
        0.50018846, -0.55975806,  1.31112595,  1.03395372,  0.82508084,
        1.44772972,  1.25995543,  0.99525077,  0.00513235,  0.24114059])

先简单处理一下 

sns.distplot(x)

输出为:

 我们对参数进行调节,首先是fit:

#fit:控制拟合的参数分布图形,能够直观地评估它与观察数据的对应关系(黑色线条为确定的分布)
from scipy.stats import *
sns.distplot(x,hist=False,fit=norm) #拟合标准正态分布

 对比参数:

#通过hidt和kde参数调节是否显示直方图和核密度估计((默认hist,kde均为True)
fig,axes = plt.subplots(1,3) # 创建一个1行3列的图片
sns.distplot(x,ax=axes[0]) # ax=axex[0]表示该图片在整个画板中的位置
sns.distplot(x,hist=False,ax=axes[1])  #不显示直方图
sns.distplot(x,kde=False,ax=axes[2])  #不显示核密度

接下来进行对比,更加直观看出预测的变化趋势,检测是正态分布。

from scipy import stats
res = stats.probplot(x, plot=plt)

红色线条表示正态分布,蓝色线条表示样本数据,蓝色越接近红色参考线,说明越符合预期分布(这是是正态分布)

四、get_dummies ()用法

将离散型特征的每一种取值都看成一种状态,若你的这一特征中有N个不相同的取值,那么我们就可以将该特征抽象成N种不同的状态,one-hot编码保证了每一个取值只会使得一种状态处于“激活态”,也就是说这N种状态中只有一个状态位值为1,其他状态位都是0。

例子:

import pandas as pd
df = pd.DataFrame([  
            ['1' , 'A'],   
            ['2'   , 'B'],   
            ['3'  , 'A']])  
df

当我们进行get_dummies()操作后:

import pandas as pd
df = pd.DataFrame([  
            ['1' , 'A'],   
            ['2'   , 'B'],   
            ['3'  , 'A']])  
df.columns = ['num',  'class'] 
pd.get_dummies(df) 

<think>我们被要求解释numpy中np.newaxis的作用和用法,特别是在多维数组操作中用于扩展维度。根据引用资料,np.newaxis的主要作用是为数组增加一个新的维度(轴)。它在使用上等价于None,是None的一个别名(引用[4])。具体来说:-当我们有一个一维数组时,可以使用np.newaxis将其转换为二维的行向量或列向量。-同样,对于多维数组,我们可以在任意位置插入新的维度。使用方式:在数组的索引操作中,在需要增加新维度的位置插入np.newaxis。示例:1.将一维数组转换为列向量(增加一个行维度,使形状从(n,)变为(n,1)):arr=np.array([0,1,2])arr_col=arr[:,np.newaxis]#或者arr[:,None]2.将一维数组转换为行向量(增加一个列维度,使形状从(n,)变为(1,n)):arr_row=arr[np.newaxis,:]#或者arr[None,:]3.对于多维数组,可以在任意位置插入新维度。例如,一个形状为(2,3)的二维数组:x=np.array([[1,2,3],[4,5,6]])#在第一个维度前插入新维度,变成(1,2,3)x_new=x[np.newaxis,:,:]#在第二个维度后插入新维度,变成(2,3,1)x_new2=x[:,:,np.newaxis]为什么需要np.newaxis?-广播(Broadcasting):当进行数组运算时,NumPy要求两个数组的形状在相应维度上兼容。有时需要手动调整数组维度以使其满足广播条件。-特定操作要求:某些操作(如某些神经网络层的输入)要求特定的维度数,这时可能需要增加维度。引用[5]中给出了一个广播的例子:X=np.random.randint(0,9,(2,3))mean_X=np.mean(X,axis=1)#形状为(2,)#直接做减法会报错,因为(2,3)和(2,)不能直接广播#但如果将mean_X增加一个维度,使其形状变为(2,1),则可以广播mean_X_expanded=mean_X[:,np.newaxis]#形状(2,1)result=X-mean_X_expanded#现在可以广播:从(2,1)广播到(2,3)另外,引用[1][2][3]中也展示了类似用法。总结:np.newaxis是一个用于增加数组维度的便捷工具。它在数组索引中使用,放在需要增加新维度的位置。下面我们用代码示例来展示np.newaxis用法。</think>### NumPy中`np.newaxis`的作用与用法详解 `np.newaxis`是NumPy中用于增加数组维度的特殊工具,它在多维数组操作中扮演着关键角色。本质上,`np.newaxis`是`None`的别名,用于在指定位置插入新的维度轴。 #### 核心作用 - **增加维度**:在现有数组的任意位置插入新的维度 - **改变形状**:将一维数组转换为行向量或列向量 - **广播兼容**:调整数组维度以实现广播运算 - **数据重塑**:为特定操作准备合适的数据结构 #### 基本用法示例 ```python import numpy as np arr = np.array([1, 2, 3]) # 形状 (3,) # 转换为列向量 (3,1) col_vector = arr[:, np.newaxis] print(col_vector) """ [[1] [2] [3]] """ # 转换为行向量 (1,3) row_vector = arr[np.newaxis, :] print(row_vector) # [[1 2 3]] ``` #### 多维数组扩展 ```python matrix = np.array([[1, 2], [3, 4]]) # 形状 (2,2) # 在第一个维度前插入新轴 (1,2,2) expanded1 = matrix[np.newaxis, :, :] print(expanded1.shape) # (1, 2, 2) # 在最后一个维度后插入新轴 (2,2,1) expanded2 = matrix[:, :, np.newaxis] print(expanded2.shape) # (2, 2, 1) ``` #### 广播运算应用 当进行数组运算时,维度必须兼容。`np.newaxis`可解决维度不匹配问题: ```python A = np.array([10, 20, 30]) # (3,) B = np.array([[1], [2], [3]]) # (3,1) # 广播运算:A自动扩展为(1,3),B为(3,1) result = A[np.newaxis, :] + B print(result) """ [[11 21 31] [12 22 32] [13 23 33]] """ ``` #### 与`np.expand_dims`的关系 `np.newaxis`是更简洁的维度扩展方法,功能等价于`np.expand_dims`: ```python # 两种方法等价 arr[:, np.newaxis] == np.expand_dims(arr, axis=1) ``` #### 实际应用场景 1. **机器学习输入**:将一维样本扩展为批量格式 ```python sample = np.array([0.1, 0.5, 0.8]) batch = sample[np.newaxis, :] # 形状 (1,3) ``` 2. **图像处理**:为灰度图添加通道维度 ```python gray_image = np.random.rand(256, 256) # (H,W) rgb_ready = gray_image[:, :, np.newaxis] # (H,W,1) ``` 3. **矩阵运算**:实现向量与矩阵的逐元素操作 ```python matrix = np.array([[1,2],[3,4]]) vector = np.array([10,20]) result = matrix * vector[np.newaxis, :] """ [[10 40] [30 80]] """ ``` #### 注意事项 1. 插入的新维度长度为1 2. 原始数据不会被复制,仅改变视图 3. 可与切片操作无缝结合使用 4. 过多使用可能导致代码可读性下降 通过合理使用`np.newaxis`,可以灵活处理各种维度转换需求,特别是在数据预处理和科学计算中实现高效的维度操作[^1][^3][^4]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进步小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值