【发布时间】:2021-08-14 19:38:24
【问题描述】:
我创建了一个名为 my_stocks 的 numpy 矩阵,其中包含两列:
- 第 0 列由我定义的特定对象组成
- 第 1 列由整数组成
我尝试按第 1 列对其进行排序,但这会导致 ValueError: np.sort(my_stocks)
完整方法:
def sort_stocks(self):
my_stocks = np.empty(2)
for data in self.datas:
if data.buflen() > self.p.period:
new_stock=[data,get_slope(self,data)]
my_stocks = np.vstack([my_stocks,new_stock])
self.stocks = np.sort(my_stocks)
如果我不是对矩阵进行排序,而是打印它,它不会导致问题。打印示例如下:
[<backtrader.feeds.yahoo.YahooFinanceData object at 0x124ec2eb0>
1.1081551020408162]
[<backtrader.feeds.yahoo.YahooFinanceData object at 0x124ec2190>
0.20202275819418677]
[<backtrader.feeds.yahoo.YahooFinanceData object at 0x124eda610>
0.08357118119975258]
[<backtrader.feeds.yahoo.YahooFinanceData object at 0x124ecc400>
0.5487027829313539]]
【问题讨论】:
-
这看起来像是将列表循环错误地翻译成 numpy!您是否注意
empty的作用以及它在结果中的显示方式。重复vstack比列表追加慢。您没有以任何方式指定对第 1 列的排序。 pythonlist.sort确实需要一个key参数。
标签: python numpy sorting matrix valueerror