我有一个python代码,如下所示。令我不安的是数组rhot
中输出的大量数据。这不可能是真的,因为val
大部分是小数字,这些小数字被指数因子进一步抑制,如图1所示
rhot[i, j, k] = (rhot[i, j, k] + val[j, k, l] *
np.exp(-(vlist[i] - velz[j, k, l]) ** 2 / (2 * beta)))
有人知道为什么我会得到大量的数字作为rhot
的输出吗?你知道吗
import numpy as np
import random
n = 6
val = np.empty((n, n, n)) # produces n*n*n empty matrix
for i in range(0, n - 1):
for j in range(0, n - 1):
for k in range(0, n - 1):
val[i, j, k] = random.lognormvariate(0, 1)
# produces lognormal random numbers with mean 1 and standard deviation 1
velz = np.empty((n, n, n))
for i in range(0, n - 1):
for j in range(0, n - 1):
for k in range(0, n - 1):
velz[i, j, k] = random.normalvariate(0, 1)
# produces normal random numbers with mean 1 and standard deviation 1
vmax = np.amax(velz) # maximum of flat velz array
vmin = np.amin(velz) # minimum
vlist = np.linspace(vmin, vmax, n)
# print(velz)
# print(val)
# print (vlist)
beta = 0.2
rhot = np.empty((n, n, n))
for i in range(0, n - 1): # index of velocity
for j in range(0, n - 1):
for k in range(0, n - 1):
for l in range(0, n - 1): # z index
rhot[i, j, k] = (rhot[i, j, k] + val[j, k, l] *
np.exp(-(vlist[i] - velz[j, k, l]) ** 2 / (2 * beta))) # sums over 3rd dimension l, and stores the sum.
print(rhot)
我可能错了,但当我运行你的代码时,我得到的值很小。会不会是你看到了
-3.53107108e-310
这样的东西,把它们当成了大数字? 这是:完整输出见下文:
相关问题 更多 >
编程相关推荐