NumPy案例巩固强化4

本文仅介绍 Numpy 库中:

  • 提取矩阵中的某一行/某一列
  • 提取向量和矩阵中的元素

1、Numpy数组矩阵中提取某一行/某一列

通过数组定义一矩阵,并提取某一行/某一列:

import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
b = a[2,:]
c = a[:,1]

矩阵 a 为:

 b为矩阵 a 的第三行, c 为矩阵 a 的第二列元素组成的数组。 b的形状为(3, ),c 的形状为(4, )。上一节已明确对于此类形状的数组在运算时视为行向量。此时,提取矩阵的第二列后获得的变量 c 为行向量,不是理想的结果。

首先想到,由于在运算时,将变量c 视为行向量,则如果对变量 c 进行转置,是否可以将行向量变为列向量呢?

import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
b = a[2,:]
c = a[:,1]
c_T = c.T

可以从结果中看到,变量c_T的形状仍然为(4, )。即对于此类形状的数组,转置无效。

如何提取矩阵某一列后直接获得一个列向量,下面介绍三种方法:

import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
c1 = a[:,1].reshape((4,1))
c2 = np.c_[a[:,1]]
c3 = a[:,1].reshape((-1,1))

这里获得的 c1 , c2 和 c3 均为形状为(4, 1)的列向量,也即矩阵 a 的第二列。值得注意的是, c1 对应的方法需要预知矩阵 a 的形状,而 c2 和 c3 对应的方法无需知道矩阵 a 的形状,这将在某种程度上带来一定便利。

总结:提取数组矩阵某一列时,需要额外操作将其转化为列向量。

2、Numpy数组向量/矩阵中提取某一元素

提取下述向量和矩阵中的元素:

import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
b = np.array([[1,2,3,4]])
c = np.array([[5],[6],[7],[8]])
a21 = a[1,0]
b2 = b[:,1]
c3 = c[2,:]

因此,在提取数组向量中的某个元素时,得到的仍然为数组,也即只有一个元素的行向量。

如果要将向量中提取到的元素直接参与数域运算,则需要做类型转换:

import numpy as np
b = np.array([[1,2,3,4]])
c = np.array([[5],[6],[7],[8]])
b2 = float(b[:,1])
c3 = int(c[2,:])

此时 b2 的值为2,类型为float; c3 的值为7,类型为int。

总结:提取向量中的值参与数域运算要做类型转换

AI实战-加拿大的工业产品价格指数数据集分析预测实例(含4个源代码+18.20 MB完整的数据集) 代码手工整理,无语法错误,可运行。 包括:4个代码,共38.64 KB;数据大小:1个文件共18.20 MB。 使用到的模块: numpy pandas os sklearn.model_selection.train_test_split tensorflow.keras.models.Sequential tensorflow.keras.layers.Dense sklearn.impute.KNNImputer sklearn.impute.IterativeImputer sklearn.linear_model.LinearRegression matplotlib.pyplot sklearn.datasets.make_blobs sklearn.cluster.DBSCAN sklearn.neighbors.LocalOutlierFactor sklearn.ensemble.IsolationForest sklearn.svm.OneClassSVM sklearn.preprocessing.MinMaxScaler sklearn.preprocessing.StandardScaler sklearn.preprocessing.MaxAbsScaler sklearn.preprocessing.RobustScaler sklearn.preprocessing.PowerTransformer sklearn.preprocessing.QuantileTransformer sklearn.preprocessing.OneHotEncoder sklearn.preprocessing.LabelEncoder category_encoders seaborn sklearn.cluster.KMeans sklearn.metrics.silhouette_score sklearn.decomposition.PCA sklearn.datasets.load_iris scipy.cluster.hierarchy.linkage scipy.cluster.hierarchy.dendrogram sklearn.cluster.AgglomerativeClustering sklearn.mixture.GaussianMixture matplotlib warnings sklearn.metrics.mean_squared_error sklearn.metrics.r2_score plotly.express sklearn.ensemble.RandomForestRegressor sklearn.ensemble.GradientBoostingRegressor catboost.CatBoostRegressor sklearn.metrics.mean_absolute_error sklearn.model_selection.RandomizedSearchCV statsmodels.tsa.arima.model.ARIMA
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

辣椒种子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值