【问题标题】:Comparing and altering values depending on indexes Numpy Python根据索引Numpy Python比较和更改值
【发布时间】:2021-11-12 08:59:11
【问题描述】:

我在ab 下面有3 个数组组合成a_and_ba 乘以 a_multiplierb 乘以 b_multiplier。我正在尝试创建一个三元语句,它检查a_and_b 的索引是否与ab 匹配,然后它与a_multiplierb_multiplier 进行必要的乘法运算。如何修改 a_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])
a_and_b = a_and_b[::2] * 3,a_and_b[1::2] * 5  if a_and_b[::2] == a 
                        else a_and_b[::2] * 5,a_and_b[1::2] * 3

预期输出:

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

【问题讨论】:

  • 所以a_and_b基本上是a和b交错的?
  • 是的,这是正确的
  • 所以基本上输出是 a * a_multiplier 与 b * b_multiplier 交错?
  • 为什么要做索引比较?
  • 我想比较 a_and_b 的内部,因为它可以像 [1,5,5,32...] 而不是 [5,1,32,5...] 开头的数组 b 而不是数组 a 开始

标签: python arrays numpy vector format


【解决方案1】:

IIUC,你可以直接做:

import numpy as np

a_multiplier = 3
b_multiplier = 5

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

res = np.vstack([a * a_multiplier, b * b_multiplier]).flatten("F")
print(res)

输出

[15  5 96 25  3 55 12 15]

【讨论】:

  • 谢谢你的代码,但我想用a_and_b检查它我试过a_and_b = np.vstack([a * a_multiplier, b * b_multiplier]).flatten("F") if a_and_b[::2] == a else np.vstack([b * b_multiplier, a * a_multiplier]).flatten("F"),但这不起作用
  • 我想先做一个索引比较然后执行np.vstack
猜你喜欢
  • 2019-04-06
  • 1970-01-01
  • 1970-01-01
  • 2019-03-04
  • 1970-01-01
  • 2015-04-07
  • 2022-08-09
  • 1970-01-01
  • 2021-03-31
相关资源
最近更新 更多