将 2 python 列表转换为 1 个 Numpy 数组,格式为 ((list1, list2))

Convert 2 python lists into 1 Numpy Array with the format ((list1, list2))

代码:

import matplotlib.pyplot as plt
import numpy as np

poslist = []
numlist = []
i = 1

num = int(input('Number to check?'))
plt.title(str(num) + ': Collatz Graph')
plt.xlabel('Step')
plt.ylabel('Value')
print(num)
poslist.append(i)
numlist.append(num)

while True:
    i = i + 1
    if num % 2 == 0:
        num = num // 2
        print(num)
    elif num == 1:
        break
    else:
        num = num * 3
        num = num + 1
        print(num)
        poslist.append(i)
        numlist.append(num)

axislist = np.array((poslist, numlist))
print(axislist)
plt.plot(axislist)
plt.show()

我正在尝试将 2 个列表变成一个 Numpy 数组。 poslist,第一个列表,将添加一个数字,每一步从前一步递增 1。 (例如 [1, 2, 3, 4])。第二个列表 numlist 将在与 Collatz Conjecture 相对应的每个步骤后附加一个数字。我需要将这两个与格式结合起来:((poslist, numlist))。然后将其输入到 matplotlib.plot() 函数中,该函数会将其转换为图表。 poslist 将在折线图上显示 x 轴,numlist 将显示 y 轴。但是,使用我的代码,它不会输出值变化的连续线,但会输出许多没有可辨别的来源的彩色线,除了一条从 0 开始到 运行 到 运行 的值y 轴上的代码,x 轴上从 0 到 1:

plt.plot(*axislist).

默认情况下,plt.plot 将单个参数解析为 y 坐标。因此,在您的情况下,每一列都用于定义一行。 您需要同时传递 x 坐标和 y 坐标,您可以通过添加 *.在 Python 中,* 会将 numpy 数组拆分为由其行定义的两个子数组。