查找矩阵v(m,k)中向量v(1,k)的出现

时间:2019-04-15 05:19:15

标签: python arrays numpy

我想找到向量v在矩阵M中的出现次数。

我所拥有的是一个大小为(60K,10)的矩阵 我初始化了一个测试向量v(1,10):

tester = np.zeros((1, 10))

现在,我要检查向量在矩阵行中完全重复自身的时间。

我进行了迭代并且可以工作,但是事实是,矩阵非常大,它会影响性能,并试图找到更优雅,更快速的方法。

将感谢您的帮助 谢谢。

2 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

library(tidyverse)

ChickWeight %>% 
  mutate(Diet = as_factor(Diet)) %>% 
  group_by(Diet, Time) %>% 
  summarize(avg_weight = mean(weight)) %>% 
  ggplot(aes(x = Time, y = avg_weight, color = Diet)) + 
  geom_line()

在没有值[x,y]的情况下, np.where()返回什么,条件是索引,在您的情况下,它将返回True和False选项,从来自真实。

因此使用它肯定会减少您的运行时间,对我而言,它比循环遍历矩阵要优雅得多。

您可以检查np.where api:

https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html

答案 1 :(得分:1)

只需比较并使用{{ ($players->total()-$loop->index)-(($players->currentpage()-1) * $players->perpage() ) }} ,因此仅当其所有元素的比较都等于参考数组时,每一行才会产生all值。然后,您可以简单地对结果进行求和,因为True

示例:

int(True) == 1

输出:

np.random.seed(0)

data = np.random.randint(0, 2, size=(50, 3))
to_match = np.random.randint(0, 2, size=(1, 3))

print(to_match)
print((data == to_match).all(axis=1).sum())

...这意味着[[0 0 0]] 4 中有四个[0, 0, 0]的实例。