假设我有一个数组
from array import array
myarr = array('l', [1, 2, 3])
Run Code Online (Sandbox Code Playgroud)
和一个变量:
myvar = 4
创建新数组的最快方法是什么:
newarray = array('l', [1, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)
您可以假设所有元素都是“长”类型
我试图创建一个新数组array.append()
并不确定它是否最快。我正在考虑使用memoryviewlike:
malloc(4*sizeof(long))
但我不知道如何将较短的数组复制到 memoryview 的一部分中。然后将最后一个元素插入最后一个位置。
我对 Cython 相当陌生。谢谢你的帮助!
更新:我比较了以下三种方法:
Cython: [100000 个循环,最好的 3 个:每个循环 5.94 µs]
from libc.stdlib cimport malloc
def cappend(long[:] arr, long var, size_t N):
cdef long[:] result = <long[:(N+1)]>malloc((N+1)*sizeof(long))
result.base[:N] = arr
result.base[N] = var
return result
Run Code Online (Sandbox Code Playgroud)
数组: [1000000 个循环,最好的 3 个:每个循环 1.21 µs]
from array import array
import …Run Code Online (Sandbox Code Playgroud) 如果重要的话,我正在使用闪亮的 R. 输出。我想向由layout(shapes = ). 它应该能够动态改变位置,以便无论图形放大或缩小如何,它都保持可见。
近似示例
到目前为止,我只能找到固定位置的文本。我不介意它是动态位于轴上还是指向参考线的箭头。
%编辑
我找到了解决问题的方法:
dt <- data.table(x = 1:10, y = rnorm(10))
annotation <- list(yref = 'paper', xref = "x", y = 0, x = 2, text = "annotation")
plot_ly(type = "scatter", mode = "lines") %>% add_trace(x = dt$x, y = dt$y, mode = "lines") %>% layout(annotations= list(annotation))
Run Code Online (Sandbox Code Playgroud)
基本上,yref = "paper"允许您指定一个始终相对于图的位置,y=1指的是图的顶部和图y=0的底部
Plotly具有同时显示多行的悬停文本的功能.例如:
dt <- data.table(x = 1:10, y = rnorm(10), z = rnorm(10)+2)
plot_ly(type = "scatter", mode = "lines") %>%
add_trace(x = dt$x, y = dt$y, name = "curve 1", mode = "lines") %>%
add_trace(y = dt$z, name = "curve 2", mode = "lines")
Run Code Online (Sandbox Code Playgroud)
但是,如果它们的模式不同,则不会对悬停文本进行分组.例如:
dt <- data.table(x = 1:10, y = rnorm(10), z = rnorm(10)+2)
plot_ly(type = "scatter", mode = "lines") %>%
add_trace(x = dt$x, y = dt$y, name = "curve 1", mode = "lines+markers") %>%
add_trace(y = dt$z, name …Run Code Online (Sandbox Code Playgroud)