【问题标题】:How to read one Numpy Array and get the value from another Numpy array如何读取一个 Numpy 数组并从另一个 Numpy 数组中获取值
【发布时间】:2021-06-03 18:45:10
【问题描述】:

我是 Numpy / python 的新手,因此非常感谢任何帮助。 X 中的每一行都有 2 个数组。我必须从X2 获取值并将其附加到新数组,具体取决于X 数组值是0 还是1。

步骤:

  1. 查看X 中连续有多少个0 或1
  2. 从X2中的索引获取值
  3. 对于X 中的每个0,将X2 中的值添加到arr0
  4. 对于X 中的每个1 值,将X2 中的值添加到arr1
  5. 遍历X 中的所有行

到目前为止,我有这个,但我不确定下一步该去哪里:

import numpy as np

X = np.array([[0,1,1,1,1],
             [0,1,1,1,0]])

X2 = np.array([[0.2,0.5,0.5,0.5,0.5],
              [0.3,0.6,0.6,0.6,0.3]])

index =[]
arr0 =[]
arr1=[]

for i in X:
    getindex = np.take(probs, i) # get the value from index
    index.append(getindex)

【问题讨论】:

  • 您几乎可以在一行中完成此操作。 arr0 = X2[X==0] / arr1 = X2[X==1] 上面写着“复制到 arr0 X2 中 X 为 0 的所有元素”。
  • 类似X2[np.where(X==1)] ?
  • @TimRoberts 谢谢你,但我现在需要确保我每行都这样做,而不是一次为整个数组。

标签: python arrays numpy loops indexing


【解决方案1】:

你可以试试 Numpy 模块take_along_axislink

X = np.array([[0,1,1,1,1],
          [0,1,1,1,0]])

X2 = np.array([[0.2,0.5,0.5,0.5,0.5],
          [0.3,0.6,0.6,0.6,0.3]])

extrac_val=np.take_along_axis(X2, X[:], axis=1)

输出

[[0.2 0.5 0.5 0.5 0.5]
 [0.3 0.6 0.6 0.6 0.3]]

【讨论】:

  • 谢谢你,但我怎样才能迭代只得到零值,所以输出是:[[0.2] [0.3 0.3]]
  • 如果我的帖子回答了您之前的问题,请接受它作为答案。您可以针对这个新的特定问题发布另一个主题。只要给我链接
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多