Python中如何将长度为n²的Numpy向量转换为n×n矩阵?
将Numpy一维向量转换为n×n矩阵
直接用numpy.reshape()方法就能实现,默认的**行优先(C顺序)**刚好匹配你要的分组规则——前n个元素作为第一行,第i组n个元素作为第i行。
示例代码
import numpy as np # 假设n=3,创建长度为9的一维向量v n = 3 v = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]) # 转换为3×3矩阵 M = v.reshape(n, n) print(M)
运行后输出:
[[1 2 3] [4 5 6] [7 8 9]]
常见问题排查
如果之前用reshape失败,大概率是这两个原因:
- 向量v的长度不是严格的
n²:检查v.size是否等于n*n,不满足的话reshape会抛出维度不匹配的错误。 - 参数指定错误:比如只写了
reshape(n)或者颠倒了维度顺序,必须明确指定两个维度(n, n)。
另外,你也可以用reshape(-1, n)让Numpy自动计算行数,因为总元素数是n²,-1会被自动解析为n,效果完全一致:
M = v.reshape(-1, n)
内容的提问来源于stack exchange,提问作者johnny rotten
相关产品推荐
相关产品推荐

