如何输出函数的输入和输出列表?

2024-04-26 05:04:14 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我用来计算y=(exp^(-mu)*mu**N)/(N!)对于0<;=n<;=n:

N = 10
mu = 2
n = np.arange(0, N+1)
numerator = (np.exp(-mu)) * mu**n
denominator = factorial(n)
function = numerator / denominator
print('N =', str(N), 'mu =', str(mu))
print('n = {:}'.format(n))
print('function = {:}'.format(function))

我得到的电流输出是:

N = 10 mu = 2
n = [ 0  1  2  3  4  5  6  7  8  9 10]
function = [  1.35335283e-01   2.70670566e-01   2.70670566e-01   1.80447044e- 
01
9.02235222e-02   3.60894089e-02   1.20298030e-02   3.43708656e-03
8.59271640e-04   1.90949253e-04   3.81898506e-05]

我想要的输出是一个列表,而不是一个数组。对于n的每个值,我需要函数的相应值。即:

N = 10 mu = 2
n = 0, function = 1.35335283e-01
n = 1, function = 2.70670566e-01
...
n = 10, function = 3.81898506e-05

我尝试过其他方法,大多数方法都会导致以下类型错误:

    print('n = {:.}'.format(n))

TypeError: non-empty format string passed to object.__format__

我已经设法让这个工作使用一个'为'循环,但我想一个方法来做这除了一个循环,因为我正试图做一个大学练习不使用任何循环。 有人知道怎么做吗?你知道吗


Tags: 方法ltformat列表npfunction数组电流
2条回答

您可以将输出压缩到一起,但需要填充n并使用循环执行函数。为什么是弦?你知道吗

n = [0,1,2,3,4,5,6,7,8,9,10]
function = [1.35335283e-01,2.70670566e-01,2.70670566e-01,
            1.80447044e-01,9.02235222e-02,3.60894089e-02,
            1.20298030e-02,3.43708656e-03,8.59271640e-04,
            1.90949253e-04,3.81898506e-05]

zipped = list(zip(n,function))

zipped

Out[ ]:
 [(0, 0.135335283),
 (1, 0.270670566),
 (2, 0.270670566),
 (3, 0.180447044),
 (4, 0.0902235222),
 (5, 0.0360894089),
 (6, 0.012029803),
 (7, 0.00343708656),
 (8, 0.00085927164),
 (9, 0.000190949253),
 (10, 3.81898506e-05)]

我同意不允许你用循环打印是一个毫无意义的要求。你知道吗

for a,b in zipped:
    print('n =',a,', function =',b)

Out[ ]:
n = 0 , function = 0.135335283
n = 1 , function = 0.270670566
n = 2 , function = 0.270670566
n = 3 , function = 0.180447044
n = 4 , function = 0.0902235222
n = 5 , function = 0.0360894089
n = 6 , function = 0.012029803
n = 7 , function = 0.00343708656
n = 8 , function = 0.00085927164
n = 9 , function = 0.000190949253
n = 10 , function = 3.81898506e-05

可以按以下方式使用numpy.vectorize

import numpy as np

def custom_print(n, f):
    print("n = {}, function = {}".format(n, f))

vprint = np.vectorize(custom_print)
n = np.array([1, 2, 3])
f = np.array([1, 4, 9])

vprint(n, f)

输出

n = 1, function = 1
n = 2, function = 4
n = 3, function = 9

注:

正如FHTMitchell在评论中所说

The vectorize function is provided primarily for convenience, not for performance. The implementation is essentially a for loop.

(从docpage:https://docs.scipy.org/doc/numpy/reference/generated/numpy.vectorize.html

相关问题 更多 >