Я запускаю свой код, и он работает правильно. Поскольку он содержит случайные числа, некоторые из этих чисел приводят к недопустимым значениям для функций в коде (это нормально, и мы не знаем, какое число приводит к недопустимому значению). Но при печати Python продолжает печать и просто показывает эту ошибку один или два раза для этих чисел:
RuntimeWarning: invalid value encountered in...
в дальнейшем:
.
.
.
174.45044049634845 0.2462826944657234 0.07030551312264746 0.5748635625886386
173.507852282145 0.22849596593782928 0.02418486733987143 0.5342742271386651
172.72866355236476 0.23561628491593717 0.00276512493464073 0.5299714003809053
Warning (from warnings module):
File "C:\... return (Om*(1+z)**3+omg0*(1+z)**6+(1-Om-omg0))**(-0.5)
RuntimeWarning: invalid value encountered in double_scalars
Warning (from warnings module):
File "C:\...", line 364
warnings.warn(msg, IntegrationWarning)
IntegrationWarning: The occurrence of roundoff error is detected, which prevents
the requested tolerance from being achieved. The error may be
underestimated.
Warning (from warnings module):
File "C:\...", line 1874
r = _umath_linalg.det(a, signature=signature)
RuntimeWarning: invalid value encountered in det
172.72866355236476 0.23561628491593717 0.00276512493464073 0.5299714003809053
172.83987258470256 0.23561628491593717 0.00276512493464073 0.521804452272765
172.94243737214325 0.23561628491593717 0.00276512493464073 0.5142747330950714
173.81824790232395 0.2447458303542599 -0.014745034802849322 0.3863934727161802
173.81824790232395 0.2447458303542599 -0.014745034802849322 0.3863934727161802
175.04959056025322 0.2447458303542599 -0.014745034802849322 0.2964727561196514
.
.
.
Python продолжает печатать, но я не могу сохранить их в файл, мне нужно скопировать и вставить. Это невозможно, если у нас есть 5 000 000 данных.
Есть ли способ записать эти выходные данные в файл?






Обработайте исключение самостоятельно, заключив вызывающую ошибку строку в блок try:
try:
r = _umath_linalg.det(a, signature=signature)
except RuntimeError as ex:
error_file.write(ex)
Поместите try: над этой линией, а except под ней.
Я спросил это, потому что hhh=np.linalg.det(zz)*0.000001 находится в функции. То есть, def function(....), ......, hhh=np.linalg.det(zz)*0.000001, return hhh Я никогда не использовал try и except в функциях.
Как вы упомянули, warnings и errors являются препятствиями для сохранения данных в файле, поэтому нам нужно их удалить. Вы можете отключить WarningError с помощью:
import warnings
warnings.filterwarnings("ignore")
вверху вашего кода. затем вы можете записывать выходы в text file.
Также вы можете использовать блоки try and except, но помните, что такие блоки очень плохо сказываются на скорости работы программы. Если вы ожидаете, что ваша программа будет печатать 10,000,000, даже с кластерными ПК вам потребуется много времени.
Итак, эта строка кода ничего не делает с остальным кодом?
Неа. откиньтесь назад и используйте как хотите :)
У меня в коде есть
hhh=np.linalg.det(zz)*0.000001. где я должен написать этот код, который вы сказали