使用Numpy按元素合并数组生成坐标对数组的实现求助
Numpy坐标对数组生成方案
你之前通过添加转置实现需求的逻辑是正确的,以下是精简优化后的实现,相比原有代码去掉了冗余的循环和重复变量定义,运行效率更高:
import numpy as np def x0x1Array(N): # 直接生成两个形状为(N-1, 1)、取值范围在-2到2之间的随机数组 x0 = np.random.uniform(low=-2, high=2, size=(N-1, 1)) x1 = np.random.uniform(low=-2, high=2, size=(N-1, 1)) # 按元素合并为坐标对数组,最终形状为(N-1, 2),每个位置的元素为(x0[i], x1[i]) x0x1 = np.concatenate([x0, x1], axis=1) print(x0x1) return x0x1
原有代码可优化点
- 不需要提前初始化全0数组,
np.random.uniform支持直接通过size参数指定输出数组的形状,一步生成符合要求的随机数数组 - 嵌套的Python原生循环完全多余,Numpy的向量化操作无需循环即可完成批量随机数生成,在N取值较大时性能优势会非常明显
- 原有代码存在变量重复定义问题:x1先被赋值为形状
(N-1, 1)的全0数组,随后又被覆盖为形状(1, N-1)的全0数组,属于不必要的冗余代码
内容的提问来源于stack exchange,提问作者Weightlifting Without Limits
相关产品推荐
相关产品推荐

