如何用简易步骤(含for循环)复现NumPy数组变形语句的输出
用for循环复现NumPy数组重塑的输出结果
你需要复现np.array([x, y]).T.reshape(-1, 1, 2)的输出,这里用for循环给出易懂的实现步骤,先修正你原尝试里的问题,再给出正确代码:
原尝试的问题
- 拼写错误:
np.araznge应该是np.arange - 初始化的
X =[[0, 0]]结构不对,应该是[[[0, 0]]]才能和后续添加的元素维度统一 - 循环范围
np.arange(1,6)会漏掉索引0,应该从0开始遍历所有元素
正确实现代码
import numpy as np x = np.arange(6) y = x ** 2 # 初始化空列表,用来存储每个三维结构的点 points_list = [] # 遍历x的所有索引(0到5) for i in range(len(x)): # 把每个(x[i], y[i])包装成[[数值对]]的形式,保证维度是(1,2) current_point = [[x[i], y[i]]] points_list.append(current_point) # 将列表转换为NumPy数组,得到目标维度(6,1,2)的结果 points = np.array(points_list) print(points)
输出验证
运行后会得到和原语句完全一致的输出:
[[[ 0 0]] [[ 1 1]] [[ 2 4]] [[ 3 9]] [[ 4 16]] [[ 5 25]]]
逻辑说明
原NumPy语句的逻辑是:
np.array([x,y])生成形状为(2,6)的数组.T转置后变成(6,2),每个行是一组(x,y)对reshape(-1,1,2)把每个(2,)的行重塑为(1,2)的子数组,最终整体形状为(6,1,2)
而for循环的实现是逐个构建(1,2)的子数组(即[[x[i],y[i]]]),再把这些子数组收集成列表,最后转成NumPy数组,正好对应上述的最终结构。
内容的提问来源于stack exchange,提问作者Turhan Tisinli
相关产品推荐
相关产品推荐

