标签: slice

将时间范围切成部分

第一个问题.要温柔.

我正在研究跟踪技术人员完成任务所花费时间的软件.需要增强软件以基于星期几和一天中的时间识别不同的可计费率乘数.(例如,"工作日下午5点以后的时间半.")

使用该软件的技术人员只需记录日期,开始时间和停止时间(以小时和分钟为单位).该软件有望在速率乘数改变时的边界处打破时间.一次性条目不允许跨越多天.

以下是费率表的部分样本.显然,第一级数组键是一周中的几天.第二级数组键表示新乘数启动时的时间,并运行到数组中的下一个连续条目.数组值是该时间范围的乘数.

[rateTable] => Array
    (
        [Monday] => Array
            (
                [00:00:00] => 1.5
                [08:00:00] => 1
                [17:00:00] => 1.5
                [23:59:59] => 1
            )

        [Tuesday] => Array
            (
                [00:00:00] => 1.5
                [08:00:00] => 1
                [17:00:00] => 1.5
                [23:59:59] => 1
            )
        ...
    )
Run Code Online (Sandbox Code Playgroud)

用简单的英语表示,从午夜到早上8点,从下午8点到下午5点,正常时间从5点到晚上11:59,时间为半年.这些中断发生的时间可以是第二次的任意时间,并且每天可以有任意数量的它们.(这种格式完全可以协商,但我的目标是让它尽可能易于阅读.)

例如:星期一从15:00:00(下午3点)到21:00:00(晚上9点)记录的时间条目包括2小时计费1x和4小时计费1.5x.单个时间条目也可以跨越多个中断.使用上面的示例rateTable,从上午6点到下午9点的时间条目将具有3个子范围,从6-8 AM @ 1.5x,8 AM-5PM @ 1x,以及5-9 PM @ 1.5x.相比之下,时间输入也可能只是从08:15:00到08:30:00,并且完全包含在单个乘数的范围内.

我真的可以使用一些帮助编写一些PHP(或至少设计一个算法),这可能需要一周中的一天,一个开始时间和一个停止时间,并解析到所需的子部分.将输出作为一个由(start,stop,multiplier)三元组的多个条目组成的数组是理想的.对于上面的示例,输出将是:

[output] => Array
    (
        [0] => Array
            (
                [start] => 15:00:00
                [stop] => 17:00:00
                [multiplier] => 1
            )

        [1] => Array
            (
                [start] …
Run Code Online (Sandbox Code Playgroud)

php time slice

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

没有切片与非零切片与Go语言中的空切片

我是Go编程的新手.我已经阅读了编程书,该片包含三个部分:指向数组的指针,长度和容量.

我在nil切片之间感到困惑(切片没有底层数组指向,len = 0,cap = 0),非零切片只有len = 0,cap = 0和空切片.

任何人都可以告诉你的零片和空片是否相同?如果它们两者不同,请告诉我们这两者有什么区别?

如何测试切片是否为空?

此外,指针在非零切片中保持什么值,其长度和容量为零?

go slice

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

如果列表元素在两个空格之间,则联接它们

我有这样的输入:

['assembly', '', 'py', 'tho', 'n', '', 'ja', 'va', '', 'rub', 'y', '', 'java', 'script', '', 'c++']
Run Code Online (Sandbox Code Playgroud)

我想在元素之间''加入这样的输出:

['assembly', 'python', 'java', 'ruby', 'javascript', 'c++']
Run Code Online (Sandbox Code Playgroud)

我尝试使用join和列表切片是这样的:

a=['assembly', '', 'py', 'tho', 'n', '', 'ja', 'va', '', 'rub', 'y', '', 'java', 'script', '', 'c++']
a[2:5] = [''.join(a[ 2: 5])]
a=['assembly', '', 'python', '', 'ja', 'va', '', 'rub', 'y', '', 'java', 'script', '', 'c++']
Run Code Online (Sandbox Code Playgroud)

这在某种程度上可行,但是我不知道如何遍历整个列表。

python whitespace join list slice

20
推荐指数
2
解决办法
635
查看次数

获取Perl数组的最后N个元素的最佳方法是什么?

获取Perl数组的最后N个元素的最佳方法是什么?

如果数组小于N,我不希望undefs在返回值中有一堆.

arrays perl slice

19
推荐指数
2
解决办法
2万
查看次数

使用imagemagick如何将图像切割成几个单独的图像?

请考虑以下示例:

在此输入图像描述

源图像由6个区域组成,需要切成6个单独的图像.

如何使用imagemagick获得所需的输出.我试图理解imagemagick 示例中提供的可能解决方案,但未能将其转移到我的具体问题.

什么是一种解决这个问题的方法,最好是在一个班轮?由于我想要切片的所有区域都具有相同的大小,但只有它们的偏移量不同,有没有办法以某种方式传递预设的区域大小,然后简单地为每个区域添加xy-offset?

bash crop imagemagick slice

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

将集合划分为"k"接近相等的部分(Scala,但语言不可知)

在此代码块之前定义:

  • dataset可以是一个VectorList
  • numberOfSlices是一种Int表示许多"次"怎么给数据集

我想将数据集拆分成numberOfSlices切片,尽可能均匀地分布.通过"拆分"我想我的意思是"分区"(所有的交集都应该是空的,所有的联合应该是原始的)来使用集合理论术语,尽管这不一定是集合,只是一个任意集合.

例如

dataset = List(1, 2, 3, 4, 5, 6, 7)
numberOfSlices = 3
slices == ListBuffer(Vector(1, 2), Vector(3, 4), Vector(5, 6, 7))
Run Code Online (Sandbox Code Playgroud)

有没有比我下面更好的方法呢?(我甚至不确定它是最优的......)或者这可能不是算法上可行的尝试,在这种情况下,任何已知的良好启发式方法?

val slices = new ListBuffer[Vector[Int]]
val stepSize = dataset.length / numberOfSlices
var currentStep = 0
var looper = 0
while (looper != numberOfSlices) {
  if (looper != numberOfSlices - 1) {
    slices += dataset.slice(currentStep, currentStep + stepSize)
    currentStep += stepSize
  } else {
    slices …
Run Code Online (Sandbox Code Playgroud)

algorithm scala slice

19
推荐指数
2
解决办法
4635
查看次数

Go有没有真正的方法缩小切片?这是一个问题吗?

我已经尝试了Go一段时间了,这个问题一直困扰着我.假设我在切片中构建了一个有点大的数据集(比如1000万个int64).

package main

import (
    "math"
    "fmt"
)

func main() {
    var a []int64
    var i int64;
    upto := int64(math.Pow10(7))
    for i = 0; i < upto; i++ {
        a = append(a, i)
    }
    fmt.Println(cap(a))
}
Run Code Online (Sandbox Code Playgroud)

但后来我决定我不想要他们中的大多数,所以我想最终只得到其中的10个.我在Go的wiki上尝试了切片和删除技术,但它们似乎都没有减少切片的容量.

所以这就是我的问题:Go没有真正的方法来缩小切片的容量,这个切片的容量realloc()与使用较小尺寸参数相比,而不是之前对C中相同指针的调用吗?这是一个问题,应该如何处理它?

go slice

19
推荐指数
3
解决办法
8993
查看次数

快速将图像切割成重叠的贴片并将贴片合并到图像的方法

尝试将尺寸为100x100的灰度图像切割成大小为39x39且重叠的贴片,步幅大小为1.这意味着向下/向下开始一个像素的下一个贴片仅与之前的贴片不同一个额外的列/或行.

代码的粗略轮廓:首先计算每个补丁的索引,以便能够从图像构造补丁的2D阵列,并能够从补丁构建图像:

patches = imgFlat[ind]
Run Code Online (Sandbox Code Playgroud)

'patches'是一个2D数组,每列包含一个矢量形式的补丁.

处理这些补丁,每个补丁单独地和之后再次合并到具有预先计算的索引的图像.

img = np.sum(patchesWithColFlat[ind],axis=2)
Run Code Online (Sandbox Code Playgroud)

由于补丁重叠,最后需要将img与预先计算的权重相乘:

imgOut = weights*imgOut
Run Code Online (Sandbox Code Playgroud)

我的代码非常慢,速度是一个关键问题,因为这应该在ca. 10 ^ 8个补丁.

函数get_indices_for_un_patchify和weights_unpatchify可以预先计算一次,因此速度只是patchify和unpatchify的问题.

谢谢你的任何tipps.

卡洛斯

import numpy as np
import scipy
import collections
import random as rand


def get_indices_for_un_patchify(sImg,sP,step):
    ''' creates indices for fast patchifying and unpatchifying

    INPUTS:
      sx    image size
      sp    patch size
      step  offset between two patches (default == [1,1])

      OUTPUTS:
       patchInd             collection with indices
       patchInd.img2patch   patchifying indices
                            patch = img(patchInd.img2patch);
       patchInd.patch2img   unpatchifying indices

    NOTE: * for unpatchifying necessary to …
Run Code Online (Sandbox Code Playgroud)

python numpy slice

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

获取作为参数传入的数组的大小

我似乎无法做到这一点.我一直收到一个错误,说'len'在类型'&[str]'上不存在.

fn testLength(arr: &[String]) {
    if arr.len >= 10 {
        // Do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

我还是Rust的新手,我知道这是一个指向原始字符串的指针.为什么我不能在运行时获取底层字符串的长度?谷歌搜索"生锈中的绳子长度"和"生锈中的阵列长度"这些东西绝对没有让我感到满意.

arrays slice rust

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

如何从 Rust 的 Option 中获取切片?

我有一个OptionRust,我需要在接受切片的函数中使用它。如何从OptionwhereSome(x)的切片有一个元素而 的None切片有零个元素中获取切片?

slice rust

19
推荐指数
2
解决办法
2238
查看次数

标签 统计

slice ×10

arrays ×2

go ×2

python ×2

rust ×2

algorithm ×1

bash ×1

crop ×1

imagemagick ×1

join ×1

list ×1

numpy ×1

perl ×1

php ×1

scala ×1

time ×1

whitespace ×1