Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 循环2个一维数组以创建numpy中的二维数组_Python_Arrays_Numpy - Fatal编程技术网

Python 循环2个一维数组以创建numpy中的二维数组

Python 循环2个一维数组以创建numpy中的二维数组,python,arrays,numpy,Python,Arrays,Numpy,我必须使用一维数组 x = [1,2,3,4,5] y = [5,6,7,8,9] 和零2d阵列 2d_array=np.zeros((5, 5)) 我有一个等式:50*x+20*y 我想做一个循环,从x和y中找到所有可能的答案 并将它们存储在2d_数组中 [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],5

我必须使用一维数组

x = [1,2,3,4,5]

y = [5,6,7,8,9]
和零2d阵列

2d_array=np.zeros((5, 5))
我有一个等式:
50*x+20*y

我想做一个循环,从x和y中找到所有可能的答案 并将它们存储在2d_数组中

[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].......
等等,我不确定解释是否清楚,但如果不清楚,请告诉我,我将上传问题的实际文件


谢谢

您无需预先制作二维阵列,您可以在以下列表中完成所有操作:

np.array([x_*50+y_*20 for y_ in y for x_ in x]).reshape(5,5)
返回:

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]])

您可以以矢量化方式执行计算:

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)
。然后允许创建二维数组结果

与基于列表理解的方法相比,您可以期望性能有所提高,尽管您可能只注意到较大的输入数组:

%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

谢谢但还有一件事也让我困惑,有点难以解释,你介意看一下文件吗?不客气!事实上,我要去睡觉了,但如果你问一个关于你的文件的具体问题,我相信会有人回答:)我会再尝试一会儿,再次感谢:),