如何重塑shape为(500,)的NumPy数组?附(625,)数组重塑示例
处理shape为(500,)数组的重塑方案
因为500无法分解为两个相等的整数乘积(25×25=625≠500),所以需要选择两个乘积为500的整数维度来构建网格,再完成数组重塑。常见的可行维度对有(20,25)、(10,50)、(5,100)等,以下是具体实现示例:
示例1:采用(25,20)的网格形状
import numpy as np # 定义两个维度的样本数,乘积为500 u1 = np.linspace(16, 20, 20) # 第一个维度取20个等分点 u2 = np.linspace(16, 20, 25) # 第二个维度取25个等分点 # 生成二维网格 u1, u2 = np.meshgrid(u1, u2) # 展平后堆叠得到(2,500)的坐标数组 U = np.vstack((u1.flatten(), u2.flatten())) # 将shape为(500,)的Z重塑为网格对应的形状(25,20) Z = Z.reshape(u1.shape)
示例2:采用(50,10)的网格形状
如果需要其中一个维度更细密,可选择(50,10)的组合:
import numpy as np u1 = np.linspace(16, 20, 10) u2 = np.linspace(16, 20, 50) u1, u2 = np.meshgrid(u1, u2) U = np.vstack((u1.flatten(), u2.flatten())) Z = Z.reshape(u1.shape) # 重塑后shape为(50,10)
核心逻辑:只要找到满足a*b=500的整数对(a,b),就可以用这两个数分别作为np.linspace的样本数生成网格,最后用网格的形状来重塑目标数组即可。
内容的提问来源于stack exchange,提问作者Sylvia
相关产品推荐
相关产品推荐

