大多数Pythonic方法防止在数组槽或cap值中添加数字,如果添加将使数字超出其数据类型范围

2024-10-06 11:17:48 发布

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

如果向数组槽中添加一个超出其数据类型范围的数字,它将在该范围内循环并返回零。uint8的最大范围为255:

z = np.zeros(2, dtype=np.uint8)

z[0]=z[0]+267

print(z[0])

> 11

我想防止任何使插槽循环回到零的加法。你知道吗

我想出了这个函数

def ifAdd( addCand, numb):
    if addCand+numb >255:
        return
    else:
        addCand = addCand + numb

ifAdd(z[0], 267)

我想知道是否有一种更为通灵的方式来做这件事。或者至少是一种计算效率更高的方法。你知道吗


Tags: 函数ifdefnpzeros数字数组数据类型
1条回答
网友
1楼 · 发布于 2024-10-06 11:17:48

你知道吗 那lambda呢?你知道吗

In [15]: z = np.zeros(2, dtype=np.uint8)                                        

In [16]: f = lambda x, y: x if x+y > 255 else x+y                               

In [17]: z[0] = f(z[0], 267)                                                    

In [18]: z                                                                      
Out[18]: array([0, 0], dtype=uint8)

In [19]: z[0] = f(z[0], 1)                                                      

In [20]: z                                                                      
Out[20]: array([1, 0], dtype=uint8)

相关问题 更多 >