【发布时间】:2021-03-24 18:43:38
【问题描述】:
我了解np.where() 的输出,输入为单行数组。但是,当使用两行数组作为输入时,我不明白为什么 b 的输出是两个数组。
a[b] 的输出是有意义的。
a = np.array([[1, 2, 3],[4,5,6]])
print(a)
print ('Indices of elements <4')
b = np.where(a<4)
print(b)
print(a[b])
b 的输出:
(array([0, 0, 0], dtype=int64), array([0, 1, 2], dtype=int64))
a[b] 的输出:
[1 2 3]
【问题讨论】:
-
您认为输出应该是什么?为什么?无论如何,Stack Overflow 不是为图书馆的设计决策辩护的正确场所。
-
因为我习惯了R,我真的不明白numpy的输出。每个人都是从初学者开始的吧?我很困惑,因为你总是在我提出问题后发表一些令人沮丧的言论。我是一名统计学家,试图学习新事物,因为我没有接受过大数据时代的教育,我正在努力追赶。
-
通过多维索引,元组的使用与列表有很大不同。它为每个维度提供一个值。
a[(i,j)]与a[np.array([i,j])]不同。b是一个数组元组,因此可以直接在a[b]表达式中使用。与np.argwhere(a<4)比较,它返回相同的数字,但作为 (3,2) 数组。 -
我明白了。谢谢!很高兴知道。我尝试了 3 行。图案很清晰。 b 中的第一个数组对应行号,b 中的第二个数组对应列号。