Numpy拼接二维数组与一维数组报维度不匹配错误如何解决
错误原因
np.random.randint(0,10,(99,100))生成的non_zero_m是二维数组,形状为(99, 100)- 按
axis=0求和后得到的arr是一维数组,形状为(100,),维度数为1 np.concatenate要求所有参与拼接的数组维度数完全相同,因此触发维度不匹配的报错
注意事项
你原本的代码使用randint(0,10,...)会生成包含0的整数,如果需要完全非零的矩阵,需要把随机数的下限改为1。
可行实现方案
以下几种写法都可以实现需求:
- 手动给求和结果升维后用
concatenate拼接
import numpy as np non_zero_m = np.random.randint(1, 10, (99, 100)) arr = non_zero_m.sum(axis=0).reshape(1, 100) singular_m = np.concatenate((non_zero_m, arr), axis=0)
- 用
np.newaxis新增维度
import numpy as np non_zero_m = np.random.randint(1, 10, (99, 100)) arr = non_zero_m.sum(axis=0)[np.newaxis, :] singular_m = np.concatenate((non_zero_m, arr), axis=0)
- 直接使用垂直拼接函数
np.vstack,自动适配维度
import numpy as np non_zero_m = np.random.randint(1, 10, (99, 100)) singular_m = np.vstack((non_zero_m, non_zero_m.sum(axis=0)))
内容的提问来源于stack exchange,提问作者doppelherz7
相关产品推荐
相关产品推荐

