Python 在numpy数组的第三维中,将前三个值乘以第四个值

Python 在numpy数组的第三维中,将前三个值乘以第四个值,python,arrays,numpy,Python,Arrays,Numpy,这是一个三维numpy阵列: 将numpy作为np导入 m=np.array[ [ [1,2,3,2], [4,5,6,3] ], [ [7,8,9,4], [1,2,3,5] ] ] 对于每个元组,我需要将前三个值乘以最后一个值除以10并四舍五入,然后只保留3个结果。例如在[1,2,3,2]中: 1变为:round1*2/10=0 2变为:round2*2/10=0 3变为:圆形3*2/10=1 所以,[1,2,3,2]变成了[0,0,1] 而完整的结果将是: [ [ [0,0,1], [

这是一个三维numpy阵列:

将numpy作为np导入 m=np.array[ [ [1,2,3,2], [4,5,6,3] ], [ [7,8,9,4], [1,2,3,5] ] ] 对于每个元组,我需要将前三个值乘以最后一个值除以10并四舍五入,然后只保留3个结果。例如在[1,2,3,2]中:

1变为:round1*2/10=0 2变为:round2*2/10=0 3变为:圆形3*2/10=1 所以,[1,2,3,2]变成了[0,0,1]

而完整的结果将是:

[ [ [0,0,1], [1,2,2] ], [ [3,3,4], [1,1,2] ] ] 我尝试在alpha变量中分离每个元组的最后一个值,在rgb变量中分离前3个值

alpha=m[:,:,3]/10 rgb=m[:,:,:3] 但在那之后,我是Python的初学者,我真的不知道如何处理这些数组

非常欢迎有经验的Python人员提供一些帮助。

试试这个

n = np.rint(m[:,:,:3] *  m[:,:,[-1]] / 10).astype(int)

Out[192]:
array([[[0, 0, 1],
        [1, 2, 2]],

       [[3, 3, 4],
        [0, 1, 2]]])
试试这个

n = np.rint(m[:,:,:3] *  m[:,:,[-1]] / 10).astype(int)

Out[192]:
array([[[0, 0, 1],
        [1, 2, 2]],

       [[3, 3, 4],
        [0, 1, 2]]])

你说我需要将前三个值乘以最后一个值,[1,2,3,2]为什么要用3而不是2来乘以?你想做预乘alpha吗?@MarkMeyer对不起,你是对的,我修正了。@MarkSetchell可能我不确定预乘alpha是什么。我有一个带alpha通道的图像,我需要把它交给IA,但没有alpha通道。你说我需要把前三个值乘以最后一个值,所以对于[1,2,3,2]为什么你要用3而不是2来相乘?你想做预乘的阿尔法吗?@MarkMeyer对不起你是对的,我修正了。@MarkSetchell也许我不确定预乘的阿尔法是什么。我有一个带有alpha通道的图像,我需要将它提供给IA,但没有alpha通道。是否可以将每个值转换为整数?我不确定它对AI是否重要,但理想情况下,我希望使用[0,0,1]而不是[0,0,1]等。古希腊语:只需使用rint和astypeint。检查我的编辑。是否可以将每个值转换为整数?我不确定它对AI是否重要,但理想情况下,我希望使用[0,0,1]而不是[0,0,1]等。古希腊语:只需使用rint和astypeint。检查我的编辑。