使用For循环附加到Numpy

2024-10-02 06:27:29 发布

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

我正在编写一个Python脚本,它获取实时流数据并将其附加到numpy数组中。但是我注意到,如果我一个接一个地附加到四个不同的数组中,它就可以工作了。例如:

openBidArray = np.append(openBidArray, bidPrice)
highBidArray = np.append(highBidArray, bidPrice)
lowBidArray = np.append(lowBidArray, bidPrice)
closeBidArray = np.append(closeBidArray, bidPrice)

但是,如果我执行以下操作,则不起作用:

^{pr2}$

你知道为什么吗?在


Tags: 数据numpy脚本np数组appendpr2bidprice
2条回答

请执行以下操作:

arrays = [openBidArray, highBidArray, lowBidArray, closeBidArray]

换句话说,您的列表应该是一个数组的列表,而不是一个字符串的列表,这些字符串碰巧包含了您碰巧定义的数组的名称。在

下一个问题是np.append()返回一个数组的副本,其中追加了项,而不是在适当的地方追加。您将此结果存储在array中,但是在下一次迭代中,array将被分配给列表中的下一项,修改后的数组将丢失(当然,最后一个将在循环末尾的array中)。所以您需要将每个修改过的数组存储回列表中。为此,您需要知道它来自哪个插槽,您可以使用enumerate()获得该插槽。在

^{pr2}$

当然,这不会更新原始变量,openBidArray等等。您可以在循环之后使用解压缩来执行此操作:

openBidArray, highBidArray, lowBidArray, closeBidArray = arrays

但从某种意义上说,将数组存储在一个列表(或者字典中,如果需要按名称访问它们的话)中,而不是使用单独的变量。在

注意:如果您在这里使用常规的Python列表而不是NumPy数组,那么这些问题中的一些就会消失。^list上的{}是一个就地操作,因此您不必将修改后的数组存储回列表或解包到各个变量中。如果您真的需要在列表上添加NumPy功能,那么可以先用列表进行所有的附加,然后再将它们转换为数组。在

在第二个示例中,您有字符串,而不是np.数组物体。您正试图附加一个数字(?)一根绳子。在

字符串“openBidArray”不包含指向名为openBidArray的数组的任何链接。在

相关问题 更多 >

    热门问题