Numpy 将二维数组与一维数组连接起来

     2023-02-24     155

关键词:

【中文标题】Numpy 将二维数组与一维数组连接起来【英文标题】:Numpy concatenate 2D arrays with 1D array 【发布时间】:2015-07-30 01:37:40 【问题描述】:

我正在尝试连接 4 个数组,一个 1D 形状数组 (78427,) 和 3 个 2D 形状数组 (78427, 375/81/103)。基本上这是 4 个数组,包含 78427 个图像的特征,其中 1D 数组每个图像只有 1 个值。

我尝试如下连接数组:

>>> print X_Cscores.shape
(78427, 375)
>>> print X_Mscores.shape
(78427, 81)
>>> print X_Tscores.shape
(78427, 103)
>>> print X_Yscores.shape
(78427,)
>>> np.concatenate((X_Cscores, X_Mscores, X_Tscores, X_Yscores), axis=1)

这会导致以下错误:

Traceback(最近一次调用最后一次): 文件“”,第 1 行,在 ValueError: 所有输入数组的维数必须相同

问题似乎是一维数组,但我真的不明白为什么(它也有 78427 个值)。我尝试在连接一维数组之前对其进行转置,但这也没有用。

任何关于连接这些数组的正确方法的帮助将不胜感激!

【问题讨论】:

【参考方案1】:

尝试连接 X_Yscores[:, None](或 X_Yscores[:, np.newaxis],如 imaluengo 建议的那样)。这会从一维数组中创建一个二维数组。

例子:

A = np.array([1, 2, 3])
print A.shape
print A[:, None].shape

输出:

(3,)
(3,1)

【讨论】:

只是指出A[:, np.newaxis]A[:, None] 具有相同的行为,并且有时可以更直观(实际上是np.newaxis == None)。 但是,只有当两者具有相同的维度时,这才是正确的。在大多数情况下,我最终得到的数组 A 的形状为 (8400,),而数组 B 的形状为 (8399, 21)。如何截断/删除 A 的最后几行,以便 A 和 B 具有相同的形状,例如 (8399,) 和 (8399, 21) 。请指教。 np.newaxis 很直观,但我仍然不明白为什么A[:, None] 有效。谁能帮我理解这个? 之所以有效,是因为"newaxis is an alias for None" 并使用None 进行索引告诉 NumPy 添加维度。所以一维数组被转换成一个二维数组,它有轴 0 和轴 1。【参考方案2】:

你可以试试这个单行:

concat = numpy.hstack([a.reshape(dim,-1) for a in [Cscores, Mscores, Tscores, Yscores]])

这里的“秘密”是在一个轴上使用已知的通用尺寸进行整形,另一个轴使用-1,它会自动匹配大小(如果需要,创建一个新轴)。

【讨论】:

可以在这里提供帮助:***.com/questions/48676461/… 一个概括:np.concatenate([a.reshape(*shape,-1) for a in my_arrays],axis=-1),其中“shape”是已知维度的形状,除了最后。【参考方案3】:

我不确定你是否想要这样的东西:

a = np.array( [ [1,2],[3,4] ] )
b = np.array( [ 5,6 ] )

c = a.ravel()
con = np.concatenate( (c,b ) )

array([1, 2, 3, 4, 5, 6])

np.column_stack( (a,b) )

array([[1, 2, 5],
       [3, 4, 6]])

np.row_stack( (a,b) )

array([[1, 2],
       [3, 4],
       [5, 6]])

【讨论】:

对此有任何想法:***.com/questions/48676461/…

Numpy:连接多维和一维数组

】Numpy:连接多维和一维数组【英文标题】:Numpy:Concatenatingmultidimensionalandunidimensionalarrays【发布时间】:2011-05-0816:29:47【问题描述】:我有一个2x2numpy数组:x=array(([[1,2],[4,5]]))我必须将它与一维数组合并(或堆叠,如果你愿意的... 查看详情

如何强制numpy将二维数组解释为一维[重复]

】如何强制numpy将二维数组解释为一维[重复]【英文标题】:Howtoforcenumpytointerpret2dimensionalarrayas1dimensional[duplicate]【发布时间】:2019-06-2909:36:39【问题描述】:我的问题:importnumpyasnpimportitertoolsbla=list(itertools.product([0,1],repeat=3))[(0,0... 查看详情

将 Pandas 系列的二维 numpy 数组转换为一维 numpy 数组列的 Pandas DataFrame

】将Pandas系列的二维numpy数组转换为一维numpy数组列的PandasDataFrame【英文标题】:ConvertPandasSeriesof2DnumpyarraystoPandasDataFrameofcolumnsof1Dnumpyarrays【发布时间】:2019-05-0507:18:43【问题描述】:第一次发布到***。我已经搜索了一个找不到... 查看详情

numpy使用np.concatenate函数将两个一维的numpy数组横向拼接起来(concatenatetwo1dnumpyarrays)

numpy使用np.concatenate函数将两个一维的numpy数组横向拼接起来(concatenatetwo1Dnumpyarrays)目录numpy使用np.concatenate函数将两个一维的numpy数组横向拼接起来(concatenatetwo1Dnumpyarrays) 查看详情

在 Numpy Python 中将一维数组附加到二维数组

】在NumpyPython中将一维数组附加到二维数组【英文标题】:Appenda1darraytoa2darrayinNumpyPython【发布时间】:2016-05-2917:35:28【问题描述】:我有一个numpy二维数组[[1,2,3]]。我需要附加一个numpy一维数组(比如[4,5,6]),使其变为[[1,2,3],[4,5... 查看详情

numpy学习二:数组的索引与切片(代码片段)

...个选区arr1d[3:5]=10print(arr1d)结果:[012 1010 56789]2、二维数组索引与切片#创建二维数组arr2d=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])print(arr2d)结果:[[1234][5678][9101112]]#第一维脚标(索引值)是0的元素是一个数组arr2d[0]结果:array([1,2,... 查看详情

编写同时接受一维和二维 numpy 数组的函数?

】编写同时接受一维和二维numpy数组的函数?【英文标题】:Writingfunctionsthatacceptboth1-Dand2-Dnumpyarrays?【发布时间】:2012-01-0709:25:48【问题描述】:我的理解是,numpy中的一维数组可以解释为面向列的向量或面向行的向量。例如,... 查看详情

numpy一维数组二维数组与pandas的seriesdataframe行列结构和横纵方向的统一说明(代码片段)

...梳理一下。在展开之前,先明确说明的是:NumPy的二维数组与Pandas的DataFrame,它们的横纵方向和行列结构完全遵循常规,它们的字面量形式与常规二维表格数据&#x 查看详情

numpy如何沿维度拆分数组?

...性。NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推。在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量。比如说,二维数组相当于是两个一维数组,其中第一个一维数组... 查看详情

python将一维概率数组转换为二维数组

】python将一维概率数组转换为二维数组【英文标题】:pythontransform1darrayofprobabilitiesto2darray【发布时间】:2021-07-0405:12:16【问题描述】:我有一个概率数组:l=[0.9,0.2,0.4]我想把它做成二维数组:l=[0.90.10.20.80.40.6]最好的方法是什么... 查看详情

二维数组与一维数组的比较

】二维数组与一维数组的比较【英文标题】:comparisonoftwodimensionalarraytoaonedimensionarray【发布时间】:2013-05-1918:50:43【问题描述】:我被困在这种情况下,我必须将一行二维数组与一维数组进行比较。两个数组都有像+和-和D这样的... 查看详情

数据分析numpy数组(代码片段)

...列表创建:‘,np.array(list1))list2=[[1,2,3],[4,5,6]]print(‘使用二维列表创建:‘,np.array(list2))#使用元组创建tuple1=(1,2,3,4,5)print(‘使用一维元组创建:‘,np.array(tuple1))tuple2=((1,2,3),(4,5,6))print(‘使用二维元组创建:‘,np.array(tuple2))#使用一... 查看详情

创建一维数组,其中元素是存储函数的二维 numpy 数组的总和

】创建一维数组,其中元素是存储函数的二维numpy数组的总和【英文标题】:Creating1Darraywhereelementsarethesumofa2Dnumpyarrayofstoredfunctions【发布时间】:2018-11-1222:57:00【问题描述】:如果之前有人问过这个问题,我深表歉意。我是python... 查看详情

将二维 JavaScript 数组转换为一维数组 [重复]

】将二维JavaScript数组转换为一维数组[重复]【英文标题】:Converta2DJavaScriptarraytoa1Darray[duplicate]【发布时间】:2013-01-2706:30:51【问题描述】:我想将2DJavaScript数组转换为1D数组,以便将2D数组的每个元素连接成单个1D数组。在这里... 查看详情

04numpy条件计算与深浅拷贝(代码片段)

...作布尔数值方法any和all按照值的大小去排序sort一维数组二维数组从小到大的索引argsort一维数组二维数组唯一值(去重)unique检查一个数组是否在其他数组中浅拷贝与深拷贝将条件逻辑作为数组操作where操作注:只能... 查看详情

为啥我在 NumPy 中的矩阵向​​量乘法会产生二维数组而不是一维向量?

】为啥我在NumPy中的矩阵向​​量乘法会产生二维数组而不是一维向量?【英文标题】:WhydoesmymatrixvectormultiplicationinNumPyyieldatwodimensionalarrayinsteadofaonedimensionalvector?为什么我在NumPy中的矩阵向​​量乘法会产生二维数组而不是一维... 查看详情

numpy数组的堆叠:numpy.stack,numpy.hstack,numpy.vstack

...出的定义是:对数组进行水平向(列)堆叠。该过程与第二维度(axis=1)的数组拼接(concatenation)是等价的,但是1维数组除外,因其只具有一个维度,故是在第一个维度进行拼接。给出如下例子(一):输出为:下面给出二维... 查看详情

python数据分析模块:numpy、pandas全解

参考技术A一维数组情况:二维数组情况:3参数情况:2参数情况:1参数情况:一维情况:二维情况:一维情况:二维情况:一维情况:二维情况:第三个参数指定维度只查看行数、或者列数逗号隔开两个索引某些行某些列可以... 查看详情