【发布时间】:2019-03-14 17:56:36
【问题描述】:
在我的程序中,我想要一维数组,将其转换为二维数组,再次将其转换回一维数组,我想在最终数组中搜索一个值。为了将一维数组更改为二维数组,我使用了 numpy。我使用 where() 函数来搜索数组,最后得到以下输出:
(数组([4], dtype=int32),)
我得到了这个结果,但我只需要它的索引,以防万一。有没有一种方法可以让我只获得 where() 函数的数值结果,或者是否有另一种方法可以让我在不使用 numpy 的情况下进行 1D 到 2D 和 2D 到 1D 的转换?
import numpy as np
a = [1,2,3,4,5,6,7,8,9];
print(a)
b = np.reshape(a,(3,3))
print(b)
c = b.ravel()
print(c)
d = np.where(c==5)
print(d)
【问题讨论】:
-
where为您提供一组数组,每个维度一个数组。应用于一维数组,它是一个 1 元素元组;应用于二维数组,它是一个 2 元素元组。d[0]将该数组拉出元组。顺便说一句,d可以用作索引,例如a[d]和a[4]一样有效。 -
或者如果你的数组按照你展示的那样排序,使用
np.searchsorted(c, 5) -
试试
print(dir(d))这会告诉你有哪些属性可用 -
np.argmax(a==5)将为您提供数组中第一个5的索引。 -
@wwii 但如果 a 中没有
5也不会抱怨。
标签: python arrays numpy multidimensional-array