乘以不同形状的数组

时间:2019-06-05 15:13:50

标签: python arrays numpy

我基本上需要将两个大小不同的数组相乘。

我有两个数据集,可以像描述一个代数方程的点表一样考虑。换句话说,对于一个数据集,我有两个对应于x和y值的数组,对于另一个数据集,我有对应于x和y值的两个数组。两组数组的形状不同,所以不能将它们相乘。

类似于将两个代数方程式相乘,当它们的x值相同时,我需要将两个y值相乘。

每个数组都是从.dat文件导入的。

以下是我尝试过的四种单独方法。


###interpolation is an array of size 1300 defined previously
###x_vals and y_vals have same dimension that is not 1300

for i in x_vals:
    for j in y_vals:
        k = j*interpolation
print(k)

################################ attempt2 ################

# x is an array of x-values associated with interpolation
for i in x:
    for j in x_vals:
        if i==j:
            k = interpolation*y_vals
print(k)

############################### attempt3 ################

for i in x_vals:
        if x==i:
            k = interpolation*y_vals
print(k)

############################ attempt4 ################

y_vals.resize(interpolation.shape)
k = interpolation*y_vals
print(k)
  • 第一次尝试未给出任何错误消息,但结果不正确。

  • 给出了以下错误: UnboundLocalError: local variable 'k' referenced before assignment

  • 第三给出了以下内容: ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

  • 第四给出了以下错误消息:ValueError: resize only works on single-segment arrays

1 个答案:

答案 0 :(得分:0)

以下代码将修复尝试2的错误。

################################ attempt2 ################

###x is an array of x-values associated with interpolation
for i in x:
        for j in x_vals:
            if i==j:
                k = interpolation*y_vals
                print(k)