【发布时间】:2017-01-13 09:47:46
【问题描述】:
我有一个rankingMat,其中包含股票代码的排名,其中每一列代表一个代码,每一行代表一个时间点。排名以降序方式执行,即rankingMat 中的 1 表示该时间段的最高排名(读取:行)。代码/第 4 列代表现金证券。这在未来很重要。
现在,我想确定我应该投资哪些股票代码。有两个条件:
- 我只投资排名小于或等于 3 的股票代码。
- 此外,我只投资与现金相比排名更高或相等的股票代码(股票代码/第 4 栏)。
我能够得到满足第一个条件的结果:
rankingMat = ...
[NaN, NaN, NaN, NaN, NaN, NaN; ...
1, 5, 2, 3, 6, 4; ...
4, 5, 2, 3, 6, 1; ...
4, 1, 2, 5, 6, 3; ...
6, 4, 5, 2, 1, 3; ...
2, 3, 4, 6, 1, 5; ...
3, 6, 4, 1, 2, 5; ...
2, 5, 6, 1, 4, 3];
portfolio = rankingMat <= 3;
结果如下:
portfolio = ...
[0, 0, 0, 0, 0, 0; ...
1, 0, 1, 1, 0, 0; ...
0, 0, 1, 1, 0, 1; ...
0, 1, 1, 0, 0, 1; ...
0, 0, 0, 1, 1, 1; ...
1, 1, 0, 0, 1, 0; ...
1, 0, 0, 1, 1, 0; ...
1, 0, 0, 1, 0, 1]
我的问题是条件 2。在每一行中,我不仅需要比较整数是否小于或等于 3,还需要确保它小于该特定行中第 4 列中的整数。我正在寻找一种避免 for 循环的解决方案。我想索引是可能的。因此,非常感谢任何提示。
最终的结果应该是这样的:
portfolio = ...
[0, 0, 0, 0, 0, 0; ...
1, 0, 1, 1, 0, 0; ...
0, 0, 1, 1, 0, 1; ...
0, 1, 1, 0, 0, 1; ...
0, 0, 0, 1, 1, 0; ...
1, 1, 0, 0, 1, 0; ...
0, 0, 0, 1, 0, 0; ...
0, 0, 0, 1, 0, 0]
【问题讨论】: