Python 打印数组时出现意外输出
我试图找到数组的最小值并打印它。简单,对吗?显然不是。我的代码:Python 打印数组时出现意外输出,python,Python,我试图找到数组的最小值并打印它。简单,对吗?显然不是。我的代码: array = generateAtoms(num) arrayPoints, vArraySum = moveMolecule(array, numSteps=steps) plotSetUp(arrayPoints) #print vArraySum print min(vArraySum), " kJ/mol is the minimum potential achieved" 我希望我的答案在-0.19的范围内。如果我不
array = generateAtoms(num)
arrayPoints, vArraySum = moveMolecule(array, numSteps=steps)
plotSetUp(arrayPoints)
#print vArraySum
print min(vArraySum), " kJ/mol is the minimum potential achieved"
我希望我的答案在-0.19的范围内。如果我不打印上面的打印语句,我的输出约为9000000 kJ/mol。如果我打印它,我的打印语句与预期一样
下面是vArraySum
的一个示例(如果我运行打印):
当我“观察”输出(使用打印)时,输出是如何变化的?我完全不知所措。再加上,900万的数字并非每次都是相同的数字,而是每次大约900万
编辑2:
def moveMolecule(array, numSteps):
# Moves molecules in random directions by adding random array
# Will not move points if potential of system increases
points = []
vArray = []
vArraySum = []
progress = 0
points.append(array)
for i in range(numSteps):
addArray = np.random.uniform(low=-0.2, high=0.2, size=(num,3))
if sumV(np.add(array, addArray)) < sumV(array):
array = np.add(array, addArray)
else:
array = array
points.append(array)
vArray.append(vArrays(array))
vArraySum.append(sumV(array))
# Updates progress bar
progress = updateProgressBar(progress, i, numSteps)
plotV(points, vArray)
return points, vArraySum
我明白了。vArraySum是一个numpy数组。一定不能和敏玩得很好?谢谢你,约翰。将数组强制转换为浮点数解决了这个问题能否添加有关输入和代码背后逻辑以及预期输出的更多信息?事实上,我没有发现你的代码中有任何错误。无法复制。“如果有任何其他信息需要我添加,请告诉我。”。您的代码使用的函数如何?当您对这些定义保密时,您如何期望任何人知道为什么
generateAtoms()
、moveMolecule
和/或plotSetUp
无法按预期工作?请给出一个答案。你介意给你的问题一个描述性的、有用的标题而不是一个有趣的标题吗?如果你能提供的只是几行充满未知参考的神秘代码或一个完整的1000行程序,那么你还没有准备好在这个网站上提问。numpy
有一个名为np.min()的函数
这也应该有效。我不太确定min()
的问题是什么,因为我认为它应该可以工作。
def moveMolecule(array, numSteps):
# Moves molecules in random directions by adding random array
# Will not move points if potential of system increases
points = []
vArray = []
vArraySum = []
progress = 0
points.append(array)
for i in range(numSteps):
addArray = np.random.uniform(low=-0.2, high=0.2, size=(num,3))
if sumV(np.add(array, addArray)) < sumV(array):
array = np.add(array, addArray)
else:
array = array
points.append(array)
vArray.append(vArrays(array))
vArraySum.append(sumV(array))
# Updates progress bar
progress = updateProgressBar(progress, i, numSteps)
plotV(points, vArray)
return points, vArraySum
def functionV(r):
# Function to calculate LJ potential
return ((4 * _e) * (((_d / r) ** 12) - ((_d / r) ** 6)))
def sumV(array):
# Uses NN search to calculate sum of potential of system
V = []
# Performs NN search to collect nearby radii
points = NNSearchSetUp(array)
radius = NNSearch(points)
# Calculate potential for NNs
for r in radius:
V.append(functionV(r))
return sum(V)