【问题标题】:Np.Argwhere To Produce NumbersNp.Argwhere 产生数字
【发布时间】:2016-02-07 20:29:52
【问题描述】:

我正在为一个课程研究价格加权指数,虽然这是一个非常简单的手工计算,但我认为这对我的 Python 新手技能来说是一个很好的练习。

编辑 这就是我现在正在使用的代码

StockBPrice = np.array([35.1, 45.6, 41.5, 47.8])
StockCPrice = np.array([52, 67.6, 61.5, 67.7])
StockDPrice = np.array([89.5, 107.4, 53.7, 64.4])

QuantityB = np.array([300,300,300,300])
QuantityC = np.array([400,400,400,400])
QuantityD = np.array([100,100,200,200])

PriceArray = []
for i in range(0,1):
    if np.argwhere(StockBPrice) < 2:
      PriceArray.append((StockBPrice+StockCPrice+StockDPrice)/3)
    else:
      d = (StockBPrice[2]+StockCPrice[2]+StockDPrice[2])/((StockBPrice[1]+StockCPrice[1]+StockDPrice[1])/float(3.0))
      PriceArray.append((StockBPrice+StockCPrice+StockDPrice)/d)

PriceArray = np.array(PriceArray)
print PriceArray

我想使用索引作为条件,但np.argwhere 给出了一个布尔值,但这是我想要使用的一般想法。

【问题讨论】:

  • 能否解释一下您想要的结果背后的数学原理?你到底想计算什么?循环的目的是什么?
  • len(StockBPrice &lt; 2) 将始终是数组的长度,使用 numpy 数组。你可以通过 StockBPrice &lt; 2 来测试它并查看输出

标签: python arrays numpy


【解决方案1】:

很简单

if len(StockBPrice) < 2:

【讨论】:

  • 嗯,我觉得自己是世界上最大的狗。
【解决方案2】:

在您的代码中,不处理长度等于 2 的情况。如果你有这个条件语句

if len(StockBPrice) < 2:

那么其他条件应该是

if len(StockBPrice) >= 2:

但是,最好使用 if else 来玩转代码。所以最好像这样格式化你的代码:

if len(StockBPrice) < 2:
    do something
else:
    do something else

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多