Numpy concatenate简单示例报错:axis=1触发AxisError问题咨询
numpy concatenate指定axis=1触发AxisError原因分析
问题描述
我尝试SparkByExamples网站上的numpy concatenate数组示例,代码如下:
import numpy as np arr=np.array([4,7,12]) arr1=np.array([5,9,15]) np.concatenate((arr,arr1)) # 预期输出array([ 4, 7, 12, 5, 9, 15]) np.concatenate((arr,arr1),axis=1) # 预期输出[[4,5],[7,9],[12,15]]
但实际触发错误:numpy.AxisError: axis 1 is out of bounds for array of dimension 1,请问该示例为何无法正常运行?
原因及解决方法
- 核心原因:
arr和arr1都是1维数组,numpy中轴的索引从0开始,1维数组仅存在axis=0这一个轴,指定axis=1属于超出数组维度范围的操作,因此触发越界错误。 - 实现预期输出的方法:
- 先将1维数组转换为2维数组(形状变为(3,1)),再沿
axis=1拼接:arr_2d = arr.reshape((3, 1)) arr1_2d = arr1.reshape((3, 1)) result = np.concatenate((arr_2d, arr1_2d), axis=1) # 输出结果:array([[ 4, 5], # [ 7, 9], # [12, 15]]) - 直接使用
np.column_stack函数,它会自动完成1维数组到2维的转换并沿列拼接:result = np.column_stack((arr, arr1))
- 先将1维数组转换为2维数组(形状变为(3,1)),再沿
内容的提问来源于stack exchange,提问作者KansaiRobot
相关产品推荐
相关产品推荐

