小编Tho*_*ing的帖子

(速度挑战)有没有更快的方法来计算两个矩阵行之间的距离矩阵(以欧几里德距离为单位)?

首先,这不是计算两个矩阵之间的欧几里德距离的问题。

假设我有两个矩阵xy,例如

set.seed(1)
x <- matrix(rnorm(15), ncol=5)
y <- matrix(rnorm(20), ncol=5)
Run Code Online (Sandbox Code Playgroud)

在哪里

> x
           [,1]       [,2]      [,3]       [,4]       [,5]
[1,] -0.6264538  1.5952808 0.4874291 -0.3053884 -0.6212406
[2,]  0.1836433  0.3295078 0.7383247  1.5117812 -2.2146999
[3,] -0.8356286 -0.8204684 0.5757814  0.3898432  1.1249309

> y
            [,1]       [,2]        [,3]       [,4]        [,5]
[1,] -0.04493361 0.59390132 -1.98935170 -1.4707524 -0.10278773
[2,] -0.01619026 0.91897737  0.61982575 -0.4781501  0.38767161
[3,]  0.94383621 0.78213630 -0.05612874  0.4179416 -0.05380504
[4,]  0.82122120 0.07456498 -0.15579551  1.3586796 -1.37705956
Run Code Online (Sandbox Code Playgroud)

然后我想获得distmat维度为 3×4 的距离矩阵,其中元素是来自or …

performance r matrix euclidean-distance

4
推荐指数
1
解决办法
1022
查看次数

根据包含参与者之间关系的数据帧的列更改边缘厚度

此代码根据参与者和关系的数据帧绘制图表。

library(igraph)
actors <- data.frame(name=c("Alice", "Bob", "Cecil", "David",
                            "Esmeralda"))
relations <- data.frame(from=c("Bob", "Cecil", "Cecil", "David",
                               "David", "Esmeralda"),
                        to=c("Alice", "Bob", "Alice", "Alice", "Bob", "Alice"),
                        friendship=c(4,15,5,2,11,1))
g <- graph_from_data_frame(relations, directed=TRUE, vertices=actors)

plot(g)
Run Code Online (Sandbox Code Playgroud)

结果是:

在此输入图像描述

我想根据 的值更改弧的厚度(而不是长度)relations$friendship

plot r igraph

4
推荐指数
1
解决办法
969
查看次数

如何比较多个矩阵并计算 R 中的百分比差异

假设这是我的数据示例

nrow<-4
ncol<-5
m1 <- matrix(rbinom(nrow*ncol,1,.5),nrow,ncol)
m2 <- matrix(rbinom(nrow*ncol,1,.5),nrow,ncol)
m3 <- matrix(rbinom(nrow*ncol,1,.5),nrow,ncol)
Run Code Online (Sandbox Code Playgroud)

我需要依次比较 3 个矩阵。根据这个原则。例如

米1

[,1] [,2] [,3] [,4] [,5]
[1,] 1 0 1 0 1
[2,] 1 1 1 0 1
[3,] 1 0 0 1 1
[4,] 0 0 0 1 0
Run Code Online (Sandbox Code Playgroud)

平方米

[,1] [,2] [,3] [,4] [,5]
[1,] 1 0 0 0 1
[2,] 0 1 1 0 0
[3,] 1 0 0 0 0
[4,] 0 1 0 1 0
Run Code Online (Sandbox Code Playgroud)

。现在计算矩阵每列中的匹配数。取两个矩阵的第一列

    m1 m2

    1 1 …
Run Code Online (Sandbox Code Playgroud)

r matrix

4
推荐指数
1
解决办法
67
查看次数

在 r 中创建不等维的对角矩阵

有没有diag()类似的方法在 r 中创建不等维对角矩阵?例如:

> diag(rep(1,9), nrow=3)
 
1 1 1 0 0 0 0 0 0
0 0 0 1 1 1 0 0 0
0 0 0 0 0 0 1 1 1
Run Code Online (Sandbox Code Playgroud)

r matrix

4
推荐指数
1
解决办法
135
查看次数

创建组合的 numpy 数组,无需显式循环/理解

我有一个很长的 NumPy 数组,我需要将其组织为“模式”,如下所示:

import numpy as np

# long array:
a = np.array(
    [
        1.3,
        -1.8,
        0.3,
        11.4,
        # ...
    ]
)


def pattern(x: float):
    return np.array(
        [
            [x, 0, 0],
            [0, x, 0],
            [0, 0, x],
            [+x, +x, +x],
            [-x, -x, -x],
        ]
    )


out = np.array([pattern(x) for x in a])
print(out.shape)
Run Code Online (Sandbox Code Playgroud)
(4, 5, 3)
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种方法可以在out 显式循环的情况下进行构造a

有任何想法吗?

python numpy matrix

4
推荐指数
1
解决办法
101
查看次数

R - 过滤数据框以仅包含列数符合条件的行

假设这个数据框:

country <- c('USA', 'USA', 'USA', 'USA', 'USA', 'UK', 'UK', 'UK', 'Canada')
number <- c(1:9)
df <- data.frame(country, number)
Run Code Online (Sandbox Code Playgroud)

我希望能够仅对国家计数大于 4 或小于 2 的行进行子集化。因此,在这种情况下,它将返回:

country  number
USA      1
USA      2
USA      3
USA      4
USA      5
Canada   9
Run Code Online (Sandbox Code Playgroud)

我能够使它与这个一起工作:

totalcounts <- filter(count(df, country), n>4 | n<2) # giving me a df of the country and count
for (i in nrow(totalcounts)){
  # code in here that rbinds rows as it matches
}
Run Code Online (Sandbox Code Playgroud)

但我觉得必须有一个更简单的方法。我还没有掌握 sapply 之类的东西,所以我觉得我在这里错过了一些东西。似乎我要走了很长一段路,并且已经有一些东西可以做到这一点。

r filter dataframe

3
推荐指数
1
解决办法
110
查看次数

我如何旋转更宽并按两列计算一对的出现?

在此处查看数据框

dt <- structure(list(ID = c(1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 4, 5, 5, 
5, 6, 6, 6, 7, 7, 7), V1 = c("ABC", "ABC", "DEF", "GHI", "GHI", 
"GHI", "JKL", "JKL", "DEF", "ABC", "MNO", "GHI", "GHI", "ABC", 
"DEF", "DEF", "GHI", "MNO", "MNO", "ABC"), V2 = c("DEF", "MNO", 
"MNO", "JKL", "DEF", "ABC", "DEF", "ABC", "ABC", "JKL", "JKL",                                                                                               
"ABC", "DEF", "DEF", "GHI", "MNO", "MNO", "ABC", "JKL", "JKL"
)), row.names = c(NA, -20L), class = c("data.table", "data.frame"))
Run Code Online (Sandbox Code Playgroud)

例如,在 V1 …

r igraph

3
推荐指数
1
解决办法
82
查看次数

查找任何指定行的单元格值为 1 的所有列名

这是我对我的项目的一个问题。

假设我有这个数据集。

  X1 X2 X3 X4
1  1  2  1  3
2  1  3  2  1
3  1  3  4  2
4  1  1  2  3
5  3  4  3  2
6  2  1  3  4
Run Code Online (Sandbox Code Playgroud)

从这个数据集中,我希望能够指定任何随机行并找出单元格等于 1 的列名。例如,如果我要指定第一行,那么我将得到X1X3作为我的输出。同样,如果我要指定第二行,那么我将得到X1X4作为我的输出。如果我要指定第三行,那么我会得到X1我的输出。

我希望这些例子有意义。我在 StackOverflow 上环顾四周,但找不到我要找的东西。如果您能帮我解决这个问题,我将不胜感激。

r dataframe

3
推荐指数
1
解决办法
51
查看次数

如何选择R中与其他组相关的组中最常见的值?

我在 R 中有以下数据框:

ID = c(rep(1,5),rep(2,3),rep(3,2),rep(4,6));ID
VAR = c("A","A","A","A","B","C","C","D",
             "E","E","F","A","B","F","C","F");VAR
CATEGORY = c("ANE","ANE","ANA","ANB","ANE","BOO","BOA","BOO",
        "CAT","CAT","DOG","ANE","ANE","DOG","FUT","DOG");CATEGORY

DATA = data.frame(ID,VAR,CATEGORY);DATA
Run Code Online (Sandbox Code Playgroud)

如下表所示:

ID VAR 类别
1 A 安尼
1 A 安尼
1 A 全日空航空公司
1 A ANB
1 安尼
2 C 嘘声
2 C 蟒蛇
2 D 嘘声
3
3
4 F
4 A 安尼
4 安尼
4 F
4 C 氟尿嘧啶
4 F

给定 RI 中上述数据帧的理想输出希望是这样的:

ID 文本 类别
1 A 安尼
2 C …

sorting group-by r

3
推荐指数
1
解决办法
853
查看次数

将命名向量转换为 R 中的对称矩阵?

已经提出了类似的问题,但是,没有一个问题需要分割向量名称,所以我提出了一个新问题。

我正在尝试将命名向量转换为 R 中的对称矩阵。我的向量包含矩阵中每个值组合的名称。所以我需要将名称分成各个组成部分。

例如,如果我的数据如下所示:

v <- c(
  "x1 x2" = 0.81899860,
  "x1 x3" = 0.10764701,
  "x2 x3" = 0.03923967,
  "x1 x4" = 0.03457240,
  "x2 x4" = 0.05954789,
  "x3 x4" = 0.15535316,
  "x1 x5" = 0.04041266,
  "x2 x5" = 0.05421003,
  "x3 x5" = 0.09198977,
  "x4 x5" = 0.15301872
)
Run Code Online (Sandbox Code Playgroud)

我们可以看到每个名称都是 2 个变量的组合。我试图将其转换为对称矩阵(对角线为零)。为了清楚起见,我想要的输出如下:

           x1         x2         x3         x4         x5
x1 0.00000000 0.81899860 0.10764701 0.03457240 0.04041266
x2 0.81899860 0.00000000 0.03923967 0.05954789 0.05421003
x3 0.10764701 0.03923967 0.00000000 0.15535316 0.09198977
x4 0.03457240 0.05954789 0.15535316 0.00000000 …
Run Code Online (Sandbox Code Playgroud)

r matrix

3
推荐指数
1
解决办法
248
查看次数