【问题标题】:Formatting arrays with multiplication Numpy Python使用乘法 Numpy Python 格式化数组
【发布时间】:2025-12-07 17:15:01
【问题描述】:

我在ab 下面有3 个数组组合成a_and_ba 乘以 a_multiplierb 乘以 b_multipliera_and_b 在实现乘数后如何修改它。

代码:

import numpy as np 

a_multiplier = 3
b_multiplier = 5

a = np.array([5,32,1,4])
b = np.array([1,5,11,3])
a_and_b = np.array([5,1,32,5,1,11,4,3])

预期输出:

[15, 5, 96, 25, 3, 55, 12, 15]

【问题讨论】:

  • 存在重复值51,如何处理?

标签: arrays python-3.x numpy vector format


【解决方案1】:

首先学习如何使用乘法:

In [187]: a = np.array([5,32,1,4])
In [188]: a*3
Out[188]: array([15, 96,  3, 12])
In [189]: b = np.array([1,5,11,3])
In [190]: b*5
Out[190]: array([ 5, 25, 55, 15])

组合两个数组的一种方法:

In [191]: np.stack((a*3, b*5),axis=1)
Out[191]: 
array([[15,  5],
       [96, 25],
       [ 3, 55],
       [12, 15]])

可以很容易地变成想要的一维数组:

In [192]: np.stack((a*3, b*5),axis=1).ravel()
Out[192]: array([15,  5, 96, 25,  3, 55, 12, 15])

【讨论】:

  • 感谢您的回答,但我一直在寻找更模块化的东西,例如搜索 a_and_b 中的内容,然后获取索引及其模式,然后与 a or b_multiplier 相乘。
  • a_and_b[::2] *= 3a_and_b[1::2] *= 5