我基本上需要将两个大小不同的数组相乘。
我有两个数据集,可以像描述一个代数方程的点表一样考虑。换句话说,对于一个数据集,我有两个对应于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
答案 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)