python - 循环 2 个一维数组以在 numpy 中创建二维数组

标签 python arrays numpy

我必须一维数组

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/

相关文章:

python - numpy 计算滞后于领导者时间戳和滞后时间戳之间

python - 带有指针数组的cython

python - 从捕获的 "RuntimeError"返回总是给出 `None` python

c++ - 如何将 int 数组转换为位图对象?

python - 仅在 numpy 中打印真正的根

python - 在python中将十进制转换为二进制

python - 在 pandas.Series 的大小为 k 的窗口中轻松找到每个第 n 个元素的平均值的方法? (不是滚动平均值)

arrays - 从 rust 中从数组转换的字符串中删除多余的长度

python - 列表中元素之间的按位运算

python - pybind11 与 numpy 的矩阵乘积