首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当堆叠相同数组的列表时,numpy vstack/c_的奇怪行为

当使用numpy的vstack和c_函数堆叠相同数组的列表时,会出现一些奇怪的行为。这是因为vstack和c_函数在处理相同数组时会创建一个新的维度。

具体来说,vstack函数会将输入的数组按垂直方向堆叠,即将它们沿着第一个轴(行)进行连接。而c_函数则会按水平方向堆叠,即将它们沿着第二个轴(列)进行连接。

然而,当堆叠相同数组的列表时,这些函数会在内部创建一个新的维度,导致结果数组的维度比预期的要多一个。这可能会导致一些意外的结果,特别是在进行索引和切片操作时。

为了解决这个问题,可以使用numpy的concatenate函数来代替vstack和c_函数。concatenate函数可以按指定的轴进行连接,而不会引入额外的维度。

下面是一个示例代码:

代码语言:txt
复制
import numpy as np

# 创建相同的数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 使用vstack函数堆叠相同数组的列表
result_vstack = np.vstack([a, b])
print("vstack结果:")
print(result_vstack)
print("维度:", result_vstack.shape)

# 使用c_函数堆叠相同数组的列表
result_c_ = np.c_[a, b]
print("c_结果:")
print(result_c_)
print("维度:", result_c_.shape)

# 使用concatenate函数堆叠相同数组的列表
result_concatenate = np.concatenate([a, b], axis=0)
print("concatenate结果:")
print(result_concatenate)
print("维度:", result_concatenate.shape)

输出结果为:

代码语言:txt
复制
vstack结果:
[[1 2 3]
 [4 5 6]]
维度: (2, 3)
c_结果:
[[1 4]
 [2 5]
 [3 6]]
维度: (3, 2)
concatenate结果:
[1 2 3 4 5 6]
维度: (6,)

可以看到,使用vstack函数和c_函数堆叠相同数组的列表时,结果数组的维度比预期的要多一个。而使用concatenate函数则得到了预期的结果。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云原生容器服务(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iot
  • 腾讯云移动开发(移动推送、移动分析、移动测试等):https://cloud.tencent.com/product/mobile
  • 腾讯云数据库(MySQL、MongoDB、Redis等):https://cloud.tencent.com/product/cdb
  • 腾讯云区块链(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙(Tencent Real-Time Render):https://cloud.tencent.com/product/trr
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

NumPy 1.26 中文官方指南(一)

, numpy.random.Generator.randn, fromfunction, fromfile 打印数组 您打印一个数组NumPy 以类似嵌套列表方式显示它,但布局如下: 最后一个轴从左到右打印...>>> np.r_[1:4, 0, 4] array([1, 2, 3, 0, 4]) 当用数组作为参数,r_ 和 c_ 在默认行为上类似于 vstack 和 hstack,但允许一个可选参数,用于指定沿哪个轴进行连接..., numpy.random.Generator.randn, fromfunction, fromfile 打印数组 您打印一个数组NumPy 会以嵌套列表方式显示,但布局如下: 最后一轴从左到右打印..., numpy.random.Generator.randn, fromfunction, fromfile 打印数组 打印数组NumPy 以类似嵌套列表方式显示它,但布局如下: 最后一个轴从左到右打印...>>> np.r_[1:4, 0, 4] array([1, 2, 3, 0, 4]) 数组一起使用时,r_ 和 c_ 在默认行为上类似于 vstack 和 hstack,但允许使用可选参数指定沿其进行连接编号

1K10
  • NumPy基础(二)(新手速来!)

    : Cannot cast ufunc add output from dtype( float64 ) to dtype( int64 ) with casting rule same_kind 操作不同数据类型数组...,最后输出数组类型一般会与更普遍或更精准数组相同(这种行为叫做 Upcasting)。...一般在高于二维情况中,hstack 沿第二个维度堆叠vstack 沿第一个维度堆叠,而 concatenate 更进一步可以在任意给定维度上堆叠两个数组,当然这要求其它维度长度都相等。...在复杂情况中,r_ 和 c_ 可以有效地在创建数组帮助沿着一条轴堆叠数值,它们同样允许使用范围迭代「:」生成数组。...>>> np.r_[1:4,0,4] array([1, 2, 3, 0, 4]) 当用数组为参数,r_ 和 c_ 在默认行为下与 vstack 和 hstack 相似,但它们如 concatenate

    97920

    搭建模型第一步:你需要预习NumPy基础都在这了

    比如,你可以用 Python 列表(list)来创建 NumPy 数组,其中生成数组元素类型与原序列相同。...操作不同数据类型数组,最后输出数组类型一般会与更普遍或更精准数组相同(这种行为叫做 Upcasting)。 许多一元运算,如计算数组中所有元素总和,是属于 ndarray 类方法。...在复杂情况中,r_ 和 c_ 可以有效地在创建数组帮助沿着一条轴堆叠数值,它们同样允许使用范围迭代「:」生成数组。...>>> np.r_[1:4,0,4] array([1, 2, 3, 0, 4]) 当用数组为参数,r_ 和 c_ 在默认行为下与 vstack 和 hstack 相似,但它们如 concatenate...([0, 0, 2, 0, 0]) 然而,索引列表中有重复,赋值任务会执行多次,并保留最后一次结果。

    2.3K20

    python:numpy详细教程

    NumPy数组类被称作ndarray。通常被称作数组。注意numpy.array和标准Python库类array.array并不相同,后者只处理一维数组和提供少量功能。...   使用数组作为参数,r_和c_默认行为vstack和hstack很像,但是允许可选参数给出组合所沿着代号。     ...更多函数hstack , vstack, column_stack , row_stack , concatenate , c_ , r_ 参见NumPy示例.     ...vsplit沿着纵向轴分割,array split允许指定沿哪个轴分割。     复制和视图     运算和处理数组,它们数据有时被拷贝到新数组有时不是。这通常是新手困惑之源。...通过布尔数组索引     当我们使用整数数组索引数组,我们提供一个索引列表去选择。通过布尔数组索引方法是不同我们显式地选择数组中我们想要和不想要元素。

    1.2K40

    【机器学习】 搭建模型第一步:你需要预习NumPy基础都在这了

    比如,你可以用 Python 列表(list)来创建 NumPy 数组,其中生成数组元素类型与原序列相同。..., numpy.random.randn, fromfunction, fromfile (这些函数也可以创建数组,有时间可以尝试解释) 输出数组 当你输出一个数组NumPy 显示这个数组方式和嵌套列表是相似的...,最后输出数组类型一般会与更普遍或更精准数组相同(这种行为叫做 Upcasting)。...在复杂情况中,r_ 和 c_ 可以有效地在创建数组帮助沿着一条轴堆叠数值,它们同样允许使用范围迭代「:」生成数组。...>>> np.r_[1:4,0,4] array([1, 2, 3, 0, 4]) 当用数组为参数,r_ 和 c_ 在默认行为下与 vstack 和 hstack 相似,但它们如 concatenate

    2.1K40

    python数据科学系列:numpy入门详细教程

    1技巧实现某一维度自动计算 另外,resize新尺寸参数与原数组大小不一致,要求操作对象具有原数组,而不能是view或简单赋值。...vstack,row_stack,功能一致,均为垂直堆叠,或者说按行堆叠,axis=0 dstack,主要面向三维数组,执行axis=2方向堆叠,输入数组不足3维时会首先转换为3维,主要适用于图像处理等领域...:前面4个方法均要求实现相同大小数组切分,切分份数无法实现整除时会报错。...与列表操作类似,numpy数组类型也存在深浅拷贝之分: 直接赋值:无拷贝,相当于是引用 view():建立视图,浅拷贝,形状可以不一致,但数据相同 copy():深拷贝,完全独立对象 ?...广播机制是指执行ufunc方法(即对应位置元素1对1执行标量运算),可以确保在数组间形状不完全相同时也可以自动通过广播机制扩散到相同形状,进而执行相应ufunc方法。

    3K10

    NumPy详细教程

    Note   在复杂情况下,r_[]和c_[]对创建沿着一个方向组合数很有用,它们允许范围符号(“:”):  >>> r_[1:4,0,4] array([1, 2, 3, 0, 4])   使用数组作为参数...,r_和c_默认行为vstack和hstack很像,但是允许可选参数给出组合所沿着代号。   ...更多函数hstack , vstack, column_stack , row_stack , concatenate , c_ , r_ 参见NumPy示例.   ...vsplit沿着纵向轴分割,array split允许指定沿哪个轴分割。   复制和视图   运算和处理数组,它们数据有时被拷贝到新数组有时不是。这通常是新手困惑之源。...通过布尔数组索引   当我们使用整数数组索引数组,我们提供一个索引列表去选择。通过布尔数组索引方法是不同我们显式地选择数组中我们想要和不想要元素。

    79300

    python numpy 总结

    NumPy数组类被称作ndarray。通常被称作数组。注意numpy.array和标准Python库类array.array并不相同,后者只处理一维数组和提供少量功能。...使用数组作为参数,r_和c_默认行为vstack和hstack很像,但是允许可选参数给出组合所沿着代号。   ...更多函数hstack , vstack, column_stack , row_stack , concatenate , c_ , r_ 参见NumPy示例.   ...vsplit沿着纵向轴分割,array split允许指定沿哪个轴分割。    复制和视图    运算和处理数组,它们数据有时被拷贝到新数组有时不是。这通常是新手困惑之源。...通过布尔数组索引    当我们使用整数数组索引数组,我们提供一个索引列表去选择。通过布尔数组索引方法是不同我们显式地选择数组中我们想要和不想要元素。

    79830

    numpy基本操作

    在复杂情况下,r_[]和c_[]对创建沿着一个方向组合数很有用,它们允许范围符号(“:”): >>> r_[1:4,0,4] array([1, 2, 3, 0, 4]) 使用数组作为参数,r_和...c_默认行为vstack和hstack很像,但是允许可选参数给出组合所沿着代号。 ...[numpy vstack vs. column_stack]  深度组合numpy.dstack()  在数组第三个轴(即深度)上组合,对应元素都组合成一个新列表,该列表作为新数组元素。...  使用ufunc函数对两个数组进行计算,ufunc函数会对这两个数组对应元素进行计算,因此它要求这两个数组形状相同。 ...一般规则是:两个维度相等,或其中一个为1,它们是兼容NumPy使用这个规则,从后边维数开始,向前推导,来比较两个元素级数组形状。

    95400

    如何连接两个二维数字NumPy数组

    方法 1:使用 np.concatenate() np.concatenate() 函数将数组序列作为其第一个参数,该参数可以是元组、列表或任何包含要连接数组可迭代对象。...请注意,我们指定 axis=1 来水平连接数组,并且生成串联数组与输入数组具有相同行数。...生成串联数组 arr3 包含来自 arr1 和 arr2 所有元素,这些元素垂直排列。请注意,我们指定 axis=0 来垂直连接数组,并且生成串联数组具有与输入数组相同列数。...np.vstack():此函数可用于垂直堆叠两个二维数组。它接受数组元组作为输入,并返回一个新数组,其中输入数组垂直堆叠。...np.vstack() 函数垂直堆叠数组,这意味着数组一个放在另一个之上。 np.hstack():此函数可用于水平堆叠两个二维数组。它接受数组元组作为输入,并返回一个新数组,其中输入数组水平堆叠

    19830

    numpy科学计算包使用2

    利用数组进行数据处理 NumPy数组使你可以将许多种数据处理任务表述为简洁数组表达式(否则需要编写循环)。用数组表达式代替循环做法,通常被称为矢量化。...矢量化数组运算要比等价纯Python方式快上一两个数量级 利用数组进行数据处理 将条件逻辑表述为数组运算 传统方式缺点: 列表推导局限性 纯Python代码,速度不够快。...' 关于zip函数一点解释,zip可以接受任意多参数,然后重新组合成1个tuple列表。...连接另一种表述 print('垂直stack与水平stack') print(np.vstack((arr1, arr2))) # 垂直堆叠 print(np.hstack((arr1, arr2))..._[arr1, arr2]) print('c_用于按列堆叠') print(np.c_[np.r_[arr1, arr2], arr]) print('切片直接转为数组') print(np.c_[1

    1.8K120

    OpenCV 4基础篇| OpenCV图像拼接

    Numpy (np.hstack,np.vstack) 语法结构: retval = np.hstack(tup) # 水平拼接 retval = np.vstack(tup) # 垂直拼接 tup:一个包含多个数组元组...这些数组将被水平堆叠(即沿第二个轴拼接)。...retval:拼接后图像,nparray 多维数组 1.1 注意事项 np.hstack() 按水平方向(列顺序)拼接 2个或多个图像,图像高度(数组行)必须相同。...np.vstack()按垂直方向(行顺序)拼接 2个或多个图像,图像宽度(数组列)必须相同。 综合使用 np.hstack() 和np.vstack() 函数,可以实现图像矩阵拼接。...np.hstack() 和 np.vstack() 只是简单地将几张图像直接堆叠而连成一张图像,并未对图像进行特征提取和边缘处理,因而并不能实现图像全景拼接。

    26400

    收藏 | Numpy详细教程

    NumPy数组类被称作ndarray。通常被称作数组。注意numpy.array和标准Python库类array.array并不相同,后者只处理一维数组和提供少量功能。...在复杂情况下, r_[]和 c_[]对创建沿着一个方向组合数很有用,它们允许范围符号(“:”): >>> r_[1:4,0,4] array([1, 2, 3, 0, 4]) 使用数组作为参数,r...和c默认行为vstack和hstack很像,但是允许可选参数给出组合所沿着代号。...复制和视图运算和处理数组,它们数据有时被拷贝到新数组有时不是。这通常是新手困惑之源。这有三种情况:完全不拷贝简单赋值不拷贝数组对象或它们数据。...通过布尔数组索引 当我们使用整数数组索引数组,我们提供一个索引列表去选择。通过布尔数组索引方法是不同我们显式地选择数组中我们想要和不想要元素。

    2.4K20

    NumPy 学习笔记(三)

    numpy.stack 函数变体,它通过水平堆叠来生成数组     d、numpy.vstack((a1, a2, ...))...是 numpy.stack 函数变体,它通过垂直堆叠来生成数组 import numpy as np # numpy.concatenate((a1, a2, ...), axis) 用于沿指定轴连接相同形状两个或多个数组...是 numpy.stack 函数变体,它通过水平堆叠来生成数组 # [[1 2 3 4] [5 6 7 8]] print("水平堆叠: ", np.hstack((a, b))) # numpy.vstack...是 numpy.stack 函数变体,它通过垂直堆叠来生成数组 # [[1 2] [5 6] [3 4] [7 8]] print("垂直堆叠: ", np.vstack((a, b)))   5、分割数组...(arr, values, axis=None) 在数组末尾添加值 arr = np.array([[1, 2, 3], [4, 5, 6]]) # axis无定义,是横向加成,返回总是为一维数组

    99020

    教程 | NumPy常用操作

    以下将开启我们 NumPy 之旅: import numpy as np 如上在 Python 内导入 NumPy 库,「np」简写即我们调用 NumPy 约定俗成命名。...所以当我们称矩阵维度是 2×3 ,这并没有错误,我们同样还是在描述一个多维数组。...因为 Python 定义列表没有 reshape() 方法,该博客给出标准数组会报错。我们只能对 NumPy 数组执行 reshape。...NumPy 数组索引方式和 Python 列表索引方式是一样,从零索引数组第一个元素开始我们可以通过序号索引数组所有元素。...为了定义两个形状是否是可兼容NumPy 从最后开始往前逐个比较它们维度大小。在这个过程中,如果两者对应维度相同,或者其一(或者全是)等于 1,则继续进行比较,直到最前面的维度。

    2.1K40
    领券