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