【问题标题】:Transform values of 1D numpy array to column numbers in 2D numpy array [duplicate]将 1D numpy 数组的值转换为 2D numpy 数组中的列号 [重复]
【发布时间】:2020-03-18 22:49:58
【问题描述】:

我需要以下逻辑:

  • 输出数组的行数与 输入数组中的元素
  • 输入数组的值表示输出数组的列数(列数等于输入数组的最大数)
  • 如果输入数组包含特定组合,则输出数组的值应为 1,否则为 0

例如,我想转换一个 numpy 数组,例如

[2, 1, 1, 0]

放入一个看起来像这样的数组

[[0, 0, 1],
 [0, 1, 0],
 [0, 1, 0],
 [1, 0, 0]]

我唯一能想到的就是用 for 循环填充一个空数组。还有更多“numpy-ish”的方法吗?

【问题讨论】:

  • 欢迎来到 StackOverflow。 On topichow to ask 和 ...the perfect question 在此处申请。特别要描述从给定输入产生给定输出的逻辑。
  • 如何选择列数?你说的不清楚
  • @makis 我编辑使其更清晰
  • 知道了。看我的回答
  • “特定组合”是什么意思?您的示例看起来像一次性编码。如果是这样,那么这个答案有效:stackoverflow.com/a/42874726/8793975

标签: python arrays numpy


【解决方案1】:

使用这个:

before = [2, 1, 1, 0]

n_rows = len(before)
n_columns = max(before) + 1

output = np.zeros((n_rows, n_columns))

#loop constructor
for idx,i in enumerate(before): output[idx,i] = 1

array([[0., 0., 1.],
       [0., 1., 0.],
       [0., 1., 0.],
       [1., 0., 0.]])

【讨论】:

  • 例如,如果输入数组中的第一个元素等于 2,则输出数组在第三列的第一行(列索引 2)处应为 1。
  • 知道了,看看我更新的答案
猜你喜欢
  • 1970-01-01
  • 2022-01-17
  • 2021-02-25
  • 2017-11-02
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 2021-05-27
  • 2016-03-25
相关资源
最近更新 更多