我一直在拼命地试图找出为什么阵列级联导致对第一次迭代乘以2的阵列...Numpy Array Concatenation将数组相乘...为什么?
这是我的代码:
def run(filename, max_iter = 1e6):
data, fm = data_extraction(filename)
large_output = None
iteration_count = 0
while iteration_count < max_iter:
iteration_count += 1
print iteration_count
results = calculations(data, (0.9,1.1))
if large_output == None:
large_output = results[:,1] #stores the energy array
print large_output
else:
large_output = np.c_[ large_output, results[:,1]]
#large_output = np.vstack([large_output, power_and_energy_var[:,1]])
print large_output
,这是控制台输出打印语句,只有3次迭代:
1
[ 3.59891391e+01 5.75841568e+00 ]
2
[[ 7.22402719e+01 3.62511328e+01]
[ 1.16726670e+01 5.91425129e+00]]
3
[[ 7.22402719e+01 3.62511328e+01 3.70141435e+01]
[ 1.16726670e+01 5.91425129e+00 6.02176042e+00]]
正如你可以看到7.22402719e+01
的两倍左右3.59891391e+01
,但它不会为连续迭代发生...
我不知道为什么会发生这种情况。我已经尝试了所有我能想到可能关闭:
1)准确地检查正在使用打印语句 2)重新加载内核删除任何挥之不去的变量 3执行了什么)np.vstack用来代替np.c_(同错误)
任何帮助将非常欢迎!
'large_output =结果[:,1]'走的results'的'一部分的图。如果它正在查看的数组发生更改,则该视图将反映这些更改。连接(尽管很慢并且一个坏主意)可能与你的问题无关。 – user2357112
在第一次迭代中'large_output'或'results [:,1]'是否是空的?输出表明堆叠阵列在1D处存在,在连续阵列中是2D。 – Divakar
@Divakar:在第一次迭代期间没有填满large_output,因为它是None。结果不是空的。 – Sorade