Python 排序numpy矩阵会导致值错误
我创建了一个名为Python 排序numpy矩阵会导致值错误,python,numpy,sorting,matrix,valueerror,Python,Numpy,Sorting,Matrix,Valueerror,我创建了一个名为my_stocks的numpy矩阵,有两列: 列0由我定义的特定对象组成 列1由整数组成 我尝试按第1列对其排序,但这会导致ValueError:np.sort(我的股票) 完整方法: def sort_stocks(self): my_stocks = np.empty(2) for data in self.datas: if data.buflen() > self.p.period: new_stock=[
my_stocks
的numpy矩阵,有两列:
- 列0由我定义的特定对象组成
- 列1由整数组成
np.sort(我的股票)
完整方法:
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]]
[
1.1081551020408162]
[
0.20202275819418677]
[
0.08357118119975258]
[
0.5487027829313539]]
我发现该方法是按原始数据而不是按列对矩阵进行排序
即使这看起来有点违反直觉,它仍然有效:
my\u stocks[my\u stocks[:,1].argsort()]
不带axis
np。sort
展平数组(您读过文档了吗?)。您没有显示ValueError
,但我怀疑这与排序那些“提要”对象有关。这看起来像是将列表循环错误地转换为numpy!您是否注意了empty
的作用以及它在结果中的显示方式。重复的vstack
比列表附加慢。您没有以任何方式指定第1列的排序。pythonlist.sort
采用了键
参数。