我必须一维数组
x = [1,2,3,4,5]
y = [5,6,7,8,9]
和一个零二维数组
2d_array=np.zeros((5, 5))
我有这个方程:50*x + 20*y
我想创建一个循环来从 x 和 y 中找到所有可能的答案 并将它们存储在 2d_array 中
[0,0,0,0,0
0,0,0,0,0
0,0,0,0,0
0,0,0,0,0
0,0,0,0,0]
所以这应该是
[50*x[0]+20*y[0],50*x[1]+20*y[0],50*x[2]+20*y[0],50*x[3]+20*y[0],50*x[4]+20*y[0]
50*x[0]+20*y[1],50*x[1]+20*y[1]50*x[2]+20*y[1],50*x[3]+20*y[1],50*x[4]+20*y[1].......
诸如此类,我不确定解释是否清楚,但如果不清楚,请告诉我,我将上传问题的实际文件。
谢谢
最佳答案
您可以以矢量化方式执行计算:
x = np.array([1,2,3,4,5])
y = np.array([5,6,7,8,9])
res = 50*x + 20*y[:, None]
array([[150, 200, 250, 300, 350],
[170, 220, 270, 320, 370],
[190, 240, 290, 340, 390],
[210, 260, 310, 360, 410],
[230, 280, 330, 380, 430]])
这里,索引器[:, None]
将y
的形状从(1,)
更改为(5, 1)
。 Broadcasting然后允许创建二维数组结果。
与基于列表理解的方法相比,您可以预期性能会有所提高,尽管您可能只会在较大的输入数组中注意到这一点:
%timeit 50*x + 20*y[:, None] # 10.1 µs
%timeit np.array([x_*50+y_*20 for y_ in y for x_ in x]).reshape(5,5) # 30.2 µs
关于python - 循环 2 个一维数组以在 numpy 中创建二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50499552/