小编Eul*_*ter的帖子

按值对枚举列表进行排序

MWE:

list1 = [2,5,46,23,9,78]
list1 = list(enumerate(list1))
Run Code Online (Sandbox Code Playgroud)

现在假设我想通过索引1对该列表进行排序,即按原始列表1排序,例如按升序排序.我怎么做?

我想要一些可以给我索引和值的东西.

list2 = sorted(list1[1], key=float)
Run Code Online (Sandbox Code Playgroud)

python list enumerate

2
推荐指数
1
解决办法
3194
查看次数

R tidyr regex:从字符列中提取有序数字

假设我有一个这样的数据框

df <- data.frame(x=c("This script outputs 10 visualizations.", 
                     "This script outputs 1 visualization.", 
                     "This script outputs 5 data files.", 
                     "This script outputs 1 data file.", 
                     "This script doesn't output any visualizations or data files", 
                     "This script outputs 9 visualizations and 28 data files.", 
                     "This script outputs 1 visualization and 1 data file."))
Run Code Online (Sandbox Code Playgroud)

看起来像这样

                                                            x
1                      This script outputs 10 visualizations.
2                        This script outputs 1 visualization.
3                           This script outputs 5 data files.
4                            This script outputs 1 data file. …
Run Code Online (Sandbox Code Playgroud)

regex r regex-lookarounds tidyr

2
推荐指数
1
解决办法
60
查看次数

R 在 matriggr 管道中从矩阵创建数据帧时给出列名称

假设我有这个矩阵

m <- matrix(1:9, 3, 3)
Run Code Online (Sandbox Code Playgroud)

看起来像这样

     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
Run Code Online (Sandbox Code Playgroud)

我想将此矩阵放入具有特定列名称的数据框中。例如

col_names <- c("col1", "col2", "col3")
Run Code Online (Sandbox Code Playgroud)

创建数据框时是否有一种简单的方法来给出这些列名称?

我的暂定解决方案

# This is how I want to create the data frame
df <- data.frame(m)
Run Code Online (Sandbox Code Playgroud)

我希望我能说一些类似的话col.names=col_names。我尝试使用renamefrom 的函数dplyr,但无法使其在一行中工作

m %>% data.frame %>% {rename(., col_names=names(.))}

Run Code Online (Sandbox Code Playgroud)

问题是它不允许我将向量解包为我认为的参数。有没有更好的办法?

重要的是:我想在创作时给出这些名字。不在新行中。可能,它应该发生在管道中

r dplyr tidyr

2
推荐指数
1
解决办法
1363
查看次数

按行填充矩阵或转置按列填充的矩阵是否更快?

我读到R在矩阵中使用列优先存储,这意味着附近列中的元素存储在连续块或类似的东西中。这让我想知道:是按行填充矩阵更快(byrow=TRUE在基本 R 函数中使用matrix())还是先按列填充矩阵(使用默认值byrow=FALSE)然后使用转置它更快t()


我尝试对其进行基准测试。

按行填充矩阵

> microbenchmark(matrix(1, n, n, byrow=TRUE))
Unit: seconds
                          expr      min       lq     mean   median       uq      max neval
 matrix(1, n, n, byrow = TRUE) 1.047379 1.071353 1.105468 1.081795 1.112995 1.628675   100
Run Code Online (Sandbox Code Playgroud)

按列填充矩阵然后转置它

> microbenchmark(t(matrix(1, n, n)))
Unit: seconds
               expr     min       lq     mean  median       uq      max neval
 t(matrix(1, n, n)) 1.43931 1.536333 1.692572 1.61793 1.726244 3.070821   100
Run Code Online (Sandbox Code Playgroud)

结论

似乎按行填充矩阵更快!我错过了什么吗?我原以为这R只会做一些重新标记,t()但实际上比逐行填充矩阵要慢!

对此有解释吗?我很困惑。

观察

在 ThomasIsCoding 的回答和对自己进行了几次基准测试之后,它看起来取决于行数和列数。

  • 行数 …

performance benchmarking r matrix microbenchmark

2
推荐指数
1
解决办法
205
查看次数

R Matrix包:稀疏矩阵的dgCMatrix类中的属性的含义

我看过Matrix包和他们的幻灯片。我试图理解课堂上争论背后的直觉和含义是什么dgCMatrix。我明白那个

\n\n
    \n
  • @i给出矩阵中非零条目的从零开始的行索引.
  • \n
  • @j给出矩阵中非零条目的从零开始的列索引.
  • \n
  • @x给出该位置处的非零元素(i,j)
  • \n
\n\n

但是我不明白指针的含义@p。文档说

\n\n
\n

数字(整数值)指针向量,每一列(或行)一个,指向列(或行)中元素的初始(从零开始)索引。

\n
\n\n

这信息不是很丰富。在同一页面的“详细信息”部分中,他们解释了更多信息

\n\n
\n

如果缺少ior ,则必须是第一个元素为零的非递减整数向量。它提供行或列索引的压缩表示或 \xe2\x80\x9cpointer\xe2\x80\x9d 表示(以缺失者为准)。的扩展形式,其中, 用作(从 1 开始的)行或列索引。jpprep(seq_along(dp),dp)dp <- diff(p)

\n
\n\n

这对我来说绝对是不直观的。有人可以简单解释一下p代表什么吗?我已经创建了一个最小工作示例,但请随意创建一个新示例。

\n\n
\n\n

最小工作示例

\n\n
# Define non-zero values and their row/col indeces\ni_indeces <- c(1, 3, 4, 6, 8, 9)\nj_indeces <- c(2, 9, 6, 3, 9, 10)\nvalues …
Run Code Online (Sandbox Code Playgroud)

pointers r matrix sparse-matrix

2
推荐指数
1
解决办法
882
查看次数

为什么我的大都会算法(mcmc)的python实现这么慢?

我正在尝试在 Python 中实现Metropolis算法(Metropolis-Hastings 算法的更简单版本)。

这是我的实现:

def Metropolis_Gaussian(p, z0, sigma, n_samples=100, burn_in=0, m=1):
    """
    Metropolis Algorithm using a Gaussian proposal distribution.
    p: distribution that we want to sample from (can be unnormalized)
    z0: Initial sample
    sigma: standard deviation of the proposal normal distribution.
    n_samples: number of final samples that we want to obtain.
    burn_in: number of initial samples to discard.
    m: this number is used to take every mth sample at the end
    """
    # List of samples, check …
Run Code Online (Sandbox Code Playgroud)

python random performance machine-learning mcmc

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

Python:for循环:使用列表中的索引和另一个列表中的另一个索引

我想循环像:

for j in range(1,4) and for k in ['one', 'two', 'three']:
               print(str(j) + ' is written ' + k)
Run Code Online (Sandbox Code Playgroud)

我试过and但它没有用.有人如何得到这种效果?

如果两个列表的长度不同,会发生什么?我怎么还能遍历它们呢?

python loops list

0
推荐指数
2
解决办法
64
查看次数

Matplotlib - 带颜色条的多个子图的紧密布局

我在一行中有一系列子图,所有子图共享相同的颜色条,我想使用plt.tight_layout().

然而,当天真地使用时,颜色条会把一切搞乱。幸运的是,我在 matplotlib 文档中找到了这一点,但它仅适用于一个子图。

最小工作示例

我尝试使其适应多个子图,但分配颜色条的子图最终变得更小。

import matplotlib.pyplot as plt 
from mpl_toolkits.axes_grid1 import make_axes_locatable
import numpy as np

plt.close('all')
arr = np.arange(100).reshape((10, 10))
fig, ax = plt.subplots(ncols=2, figsize=(8, 4))
im0 = ax[0].imshow(arr, interpolation="none")
im1 = ax[1].imshow(arr, interpolation='none')

divider = make_axes_locatable(plt.gca())
cax = divider.append_axes("right", "5%", pad="3%")
plt.colorbar(im0, cax=cax)

plt.tight_layout()
Run Code Online (Sandbox Code Playgroud)

这就是结果的样子。

在此输入图像描述

python matplotlib

0
推荐指数
1
解决办法
1157
查看次数