只有我一个人

2024-10-02 00:28:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我这里有一个大问题,我正在与numpy合作,并试图更好地理解它,但我在实现我的目标的路上遇到了一些小问题。你知道吗

这是我的密码。你知道吗

product_test = []
product_test.append({
    'min-dkk' : 149.9,
    'min-procent' : 100.0,
    'max-dkk' : 249.9,
    'max-procent' : 0.0,
    'cost-price' : 400.0
})
product_test.append({
    'min-dkk' : 150.1,
    'min-procent' : 0.0,
    'max-dkk' : 0.0,
    'max-procent' : 10,
    'cost-price' : 1000.0
})

product_test.append({
    'min-dkk' : 25.0,
    'min-procent' : 5000.0,
    'max-dkk' : 100.0,
    'max-procent' : 0.0,
    'cost-price' : 10.0
})

# print(product_test)
list_product = None
for test in product_test:
    if list_product is None:
        list_product = np.array([[test['min-dkk'],test['min-procent'],test['max-dkk'],test['max-procent'],test['cost-price']]])
    else:
        product_price_data = np.array([[test['min-dkk'],test['min-procent'],test['max-dkk'],test['max-procent'],test['cost-price']]])
        list_product = np.vstack((list_product, product_price_data))

print('')
print(list_product)

list_product[:,0] += 0.0 if list_product[:,0] == 0 else list_product[:,4]
list_product[:,1] = 0.0 if (list_product[:,4] + ((list_product[:,4]/100) * list_product[:,1])) == list_product[:,4] else (list_product[:,4] + ((list_product[:,4]/100) * list_product[:,1]))
list_product[:,2] += 0.0 if list_product[:,2] == 0 else list_product[:,4]
list_product[:,3] = 0.0 if (list_product[:,4] + ((list_product[:,4]/100) * list_product[:,3])) == list_product[:,4] else (list_product[:,4] + ((list_product[:,4]/100) * list_product[:,3]))

如果我只在numpy数组中的一行上运行这个代码,它工作正常,如果我运行这个代码,我将得到错误

list_product[:,0] += 0.0 if list_product[:,0] == 0 else 

list_product[:,4]
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我的想法是,如果一个值大于0(零),我想基于该值对字段进行多重显示,当我只对一个数组行执行此操作时,它可以正常工作,但当我对多行执行此操作时,会出现此错误,我试着去读它,我不想返回“真/假”,我想做我的数学,如果它与零不同,因为价格规则在我们的动态范围内可以是正的,也可以是负的。你知道吗


Tags: testifnpproductminarraypriceelse
1条回答
网友
1楼 · 发布于 2024-10-02 00:28:00

numpy的等效值为:

list_product[:,0] += (list_product[:,0] != 0) * list_product[:,4]

条件现在被求值为boolean类型的数组,强制转换为list\u product类型(1表示true,0表示false),然后与可能要添加的数组相乘。你知道吗

相关问题 更多 >

    热门问题