numpy concatenate拼接数组报TypeError标量索引错误排查
报错原因
报错的核心是numpy.concatenate函数的参数传递不符合语法规则:
np.concatenate要求第一个传入参数必须是待拼接数组构成的元组或列表,你直接将arr1、arr2作为两个独立参数传入,函数会将第二个位置传入的arr2识别为axis参数的传值。axis参数仅接受整数标量(用来指定拼接维度),传入数组时就会触发TypeError: only integer scalar arrays can be converted to a scalar index报错。- 你写的代码里
axis = 0被放在了np.concatenate()的括号外部,根本不会被识别为该函数的参数,属于无效的参数位置。
修正方案
将待拼接的两个数组包裹为元组作为第一个参数传入,同时把axis参数放到函数括号内部,修正后的完整代码如下:
import numpy as np arr_bis = np.array([[1,2,3],[7,1,6],[9,6,3]]) arr1 = arr_bis[:,1] arr2 = arr_bis[:,2] print(f"ARR1{arr1}") print(f"ARR2{arr2}") print(np.concatenate((arr1, arr2), axis=0))
运行结果说明
修正后代码会按0轴方向(一维数组默认首尾相接)完成拼接,输出结果为:
ARR1[2 1 6] ARR2[3 6 3] [2 1 6 3 6 3]
内容的提问来源于stack exchange,提问作者leili
相关产品推荐
相关产品推荐

