【发布时间】:2019-05-07 16:10:47
【问题描述】:
我需要计算两个 numpy 数组以获得第三个数组所需的行为。
首先,这是前两个数组:
[[2 0 1 3 0 1]
[1 2 1 2 1 2] # ARRAY 1
[2 1 2 1 0 1]
[0 2 0 2 2 3]
[0 3 3 3 1 4]
[2 3 2 3 1 3]]
[[0.60961197 0.29067687 0.20701799 0.79897639 0.74822711 0.21928105]
[0.67683562 0.14261662 0.74655501 0.21529103 0.14347939 0.42190162]
[0.21116134 0.98618323 0.93882545 0.51422862 0.12715579 0.18808092] # ARRAY 2
[0.48570863 0.32068082 0.32335023 0.62634641 0.37418013 0.44860968]
[0.12498966 0.56458377 0.24902924 0.12992352 0.76903935 0.68230202]
[0.90349626 0.75727838 0.14188677 0.63082553 0.96360265 0.28694261]]
其中 array1[0][0] 将用于从 array3[0][0] 中减去输入值,然后使用 array2[0][0] 将现在从 array3[0 中减去的值相乘][0] 给出 array3[1][0] 的新输出(换句话说,这些计算将得到 array3)。
例如,假设 array3[0] 的起始值为:
[[20,22,24,40,42,10],
....
对于array3[0][0] (20),它需要减去2(来自array1[0][0]),留下18的值。然后现在乘以18 0.60961197 (array2[0][0]) 留下 NEW VALUE 10.97。 10.97 现在是 array3[1][0] 的新值。
如果您要移动到下一列,过程将是相同的。您将取 22-0 = 22,然后取 22 * 0.29067687 为 array3[1][1] 创建新值。
为了提供一个直观的例子,前两行的这个数组的完整过程如下所示:
[[20 22 24 40 42 10],
[10.97 19.65 7.44 10.58 7.03],
....
我试图让这个过程在第一个数组的整个长度上继续进行(我猜是第二个,因为它们是相同的)。因此,对于下一组,您将为每个索引取 10.97-1 * 0.6768... = 6.74.. 以此类推,直到它到达末尾。
我很困惑该怎么做,我尝试了一个 for 循环,但我觉得在 numpy 中可能有更多有效的方法来做到这一点。
衷心感谢您的帮助,我知道这并不容易(或者可能会!)。这将启动对我来说将是一个相当漫长的项目。
非常感谢!
注意:如果 numpy 数组不是解决此问题的好方法,并且可以说列表更好,我非常愿意走这条路。我只是假设大多数 numpy 的功能会更容易。
【问题讨论】:
-
可以添加array3吗?
-
将 array3 添加到什么?喜欢完成数组?
-
array3的起始值
-
如果你不想做解析数学,你可以简单地在
for i in range(len(array1))中做array3[i+1]=(array3[i]-array1[i])*array2[i] -
计算array3的起始值不会真正改变任何东西@DanielMesejo,因为array3的功能只是得到array1和2的计算结果