【问题标题】:How can change the type of an array?如何更改数组的类型?
【发布时间】:2019-10-23 21:30:14
【问题描述】:

标题有点错误,但我不知道还能用什么,对不起。

我有什么: 我有一个函数 k 有两个输入 a 和 b 具有相同的类型“类 'numpy.ndarray'”和相同的形状,看起来像这样:

(100,)

(100,)

(100,)

(100,)

...

煤就是找到a的每个向量(shape = (100,))的最小值,并在b上找到以a的最小值为索引的元素。

所以如果 a 的第一个向量在位置 [35] 上有他的最小值,我们想要位置 [35] 上的元素,但来自 b 的第一个向量。

我希望这是有道理的?

最后我想要整数。

编辑:

这里是一些示例输入

a = [[0.24875591 0.16306678 0.78364326 ... 0.65339055 0.36671955 0.79556977]
 [0.01090705 0.48027704 0.09681013 ... 0.19689527 0.88788462 0.64784676]
 [0.0277094  0.63714653 0.87690794 ... 0.4202944  0.52492127 0.65170223]
 ...
 [0.75916264 0.99673363 0.2800721  ... 0.7501566  0.98627157 0.06429751]
 [0.2447071  0.57766005 0.77387911 ... 0.1023757  0.71880919 0.45419627]
 [0.31396027 0.26280255 0.13444513 ... 0.51871024 0.26153987 0.63990427]]
[[0.24875591 0.16306678 0.78364326 ... 0.65339055 0.36671955 0.79556977]
 [0.01090705 0.48027704 0.09681013 ... 0.19689527 0.88788462 0.64784676]
 [0.0277094  0.63714653 0.87690794 ... 0.4202944  0.52492127 0.65170223]
 ...
 [0.75916264 0.99673363 0.2800721  ... 0.7501566  0.98627157 0.06429751]
 [0.2447071  0.57766005 0.77387911 ... 0.1023757  0.71880919 0.45419627]
 [0.31396027 0.26280255 0.13444513 ... 0.51871024 0.26153987 0.63990427]]

a的形状是:

(100,)

(100,)

b = 
[1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1
 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0
 0 0 1 1 0 1 0 0 1 1 1 1 1 0 0 1 1 0 0 0 0 0 1 1 1 0]
[1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1
 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0
 0 0 1 1 0 1 0 0 1 1 1 1 1 0 0 1 1 0 0 0 0 0 1 1 1 0]

b的形状是:

(100,)

(100,)

输出的形式应该是这样的

0
1
0
1
1
...

【问题讨论】:

  • 能否请您提供一个[最小可重现示例](/help/mcve),尤其是指定输入和预期输出?
  • @norok2 你好,我在我的问题中添加了一些输入。
  • 目前还不清楚你要做什么,也不清楚为什么 a & b 有形状 (100,); (100,)。每个数组应该有一个形状。
  • @JonnyEnglish 我会在这里强调简约的必要性。尝试使用仍然重现问题的小而简单的 toy 示例。
  • 我支持@BiRico 的评论,对数组形状的描述毫无意义。你的标题也有问题,我会尝试建议编辑。最后,您的“输出形式”示例可能不正确。

标签: python python-3.x numpy


【解决方案1】:

使用.astype():

return b[index].astype(int)

【讨论】:

  • 你好,很遗憾这对我不起作用,输出仍然是这样的 [4] [4] [1] [0] [0] [1]
【解决方案2】:

这是随机整数数组的示例解决方案。

arr_1 = np.random.randint(low=0, high=20, size=(4, 3))
arr_2 = np.random.randint(low=0, high=20, size=(4, 3))

arr_1_min_inds = np.argmin(arr_1, axis=1)

arr_2_res = arr_2[np.arange(arr_1_min_inds.shape[0]), arr_1_min_inds]

【讨论】:

    【解决方案3】:

    您可以使用np.argmin 并使用它来索引b:

    b[range(len(b)), np.argmin(a, axis=1)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      • 2017-06-12
      • 1970-01-01
      • 2017-11-14
      • 2011-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多