【问题标题】:How to make Fibonacci number in matrix with numpy?如何用numpy在矩阵中制作斐波那契数?
【发布时间】:2020-09-25 18:32:42
【问题描述】:

我刚开始学习 Python,我不知道使用 numpy 库。我的老师告诉我制作一个充满斐波那契数的矩阵。基本上他希望我显示这样的输出

[[0 1 1 2]

[3 5 8 13]

[21 34 55 89]]

很高兴任何可以帮助我的人

【问题讨论】:

  • 我强烈建议您在提问之前阅读或观看教程。 Stack Overflow 不适合那样做。

标签: python numpy matrix fibonacci


【解决方案1】:

这是一个简单的任务。

import numpy as np

# dimensions of the matrix
n, m = 3, 4

# create resulting matrix (init with zeros for convenience)
result = np.zeros((n, m), dtype=int)

# fill up first 2 elements of the matrix
result[0 // m][0 % m] = 0
result[1 // m][1 % m] = 1

# now you don't need to refer to the matrix but store 2 last
# fibonacci numbers
prevprev = 0
prev = 1

for i in range(2, n * m):
    current = prevprev + prev
    result[i // m][i % m] = current
    prevprev = prev
    prev = current

# print the result
print(result)

这里唯一要知道的是矩阵中的 ith 数位于 i // m 行和 i % m 列(全部为 0 索引)。尝试使用不同的矩阵尺寸进行试验,然后亲自看看。干杯:)

【讨论】:

  • 请不要回答提出不当的问题,因为这会助长不良行为。
【解决方案2】:

整个过程的开始必须是“使命宣言”, 即结果数组应该有多少行和列。

它们将是我的函数的 rc 参数。

那么第一个任务就是生成一个数字列表——斐波那契 序列,大小为 r * c.

并且返回值应该是:

  • 从这个序列创建的 Numpy 数组,
  • 重塑为(r, c)

执行它的代码(函数)可以是:

def Fibon(r, c):
    seq = [0, 1]
    for i in range(r * c - 2):
        seq.append(sum(seq[-2:]))
    return np.array(seq).reshape((r,c))

当你调用它时:

Fibon(3, 4)

你会得到:

array([[ 0,  1,  1,  2],
       [ 3,  5,  8, 13],
       [21, 34, 55, 89]])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-04
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 2015-04-11
    • 2017-06-08
    • 1970-01-01
    相关资源
    最近更新 更多