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由整数组成
我尝试按第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=[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列的排序。python
list.sort
采用了
参数。