【问题标题】:Multiply each value in a 2-D array by corresponding values in another 2-D array将二维数组中的每个值乘以另一个二维数组中的对应值
【发布时间】:2019-02-02 23:40:13
【问题描述】:

正如标题所示,我试图将二维数组中的每个值乘以另一个二维数组中的对应值。我可以做到这一点并为此编写了以下代码。但是我的问题是每个二维数组包含 1000 个包含 15289 个数字的数组需要太长时间。我必须这样做三遍,因为我有三个这样的二维数组。目前,完成所有这些需要一分钟(运行以下代码大约需要 20 秒)。这太长了,因为我有 100 组数据来运行我的整个脚本,每个脚本都包含 3 组这些二维数组。如果我能将这 20 秒缩短,从长远来看,它会为我节省大量时间,因为其他一切都运行顺利!

e_data = [[i*j for i,j in y] for y in np.dstack((e_data,sens_function))]    

e_data 是我的射电通量值(对于那里的任何射电天文学家),sens_function 是乘法中的另一个数组(这将使我的e_data 得到我需要的单位)。任何帮助或建议将不胜感激!

【问题讨论】:

    标签: python arrays numpy multidimensional-array multiplication


    【解决方案1】:

    我认为您使用嵌套的for 循环和dstack 过于复杂。您可以只使用*(乘法)运算符。对于二维数组,它将执行元素乘法。请参见以下示例:

    e_data = np.arange(9).reshape(3,3)
    print (arr1)
    # [[0 1 2]
    # [3 4 5]
    # [6 7 8]]
    
    sens_function = np.arange(9).reshape(3,3)
    print (arr2)
    # [[0 1 2]
    #  [3 4 5]
    # [6 7 8]]
    
    result = e_data*sens_function
    print (result)
    
    # [[ 0  1  4]
    # [ 9 16 25]
    # [36 49 64]]
    

    【讨论】:

    • 为什么投反对票?是怨恨还是反馈?我相信没有比使用* 将两个数组相乘更简单的答案了。
    【解决方案2】:

    你正在表演element-wise multiplication, which is a numpy method

    e_data = np.multiply(e_data, sens_function)
    

    【讨论】:

      猜你喜欢
      • 2016-12-07
      • 1970-01-01
      • 2016-04-15
      • 2018-04-22
      • 2014-09-03
      • 1970-01-01
      • 2021-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多