我是新来的。你知道吗
基本上我想做的是生成一个24小时的时间信号,在6小时的时间间隔内,前30分钟信号为1,其余时间为0。你知道吗
换句话说-
t=0
到t=0.5
,数组的值是1。你知道吗t=6
到t=6.5
,数组的值是1。你知道吗t=18
到t=18.5
,数组的值是1。你知道吗我是这样做的:
time
是时间数组(以小时为单位)inFlowArray
是所需的信号。它是time
的函数。你知道吗这是密码-
tStart = 0
tEnd = 24
dt = 0.1
time = np.arange(0, tEnd, dt) # in hours
inFlowArray = np.logical_or.reduce(np.array(((time<=0.5),
np.logical_and(time>=6, time<=6.5), np.logical_and(time>=12,
time<=12.5), np.logical_and(time>=18, time<=18.5))))
inFlowArray = inFlowArray.astype(int)
问题是,如果我的time
数组长度较长,比如说48小时或更长,那么这样做有点乏味。你知道吗
如何有效地编写代码?
我试图阅读其他堆栈溢出的答案,但找不到任何合适的解决方案。我也读过numpy文档。你知道吗
可以使用模运算符
%
:一句警告:对于
0.5
这是毫无问题的,因为0.5
是一个精确的二进制分数。现在用0.4
试试同样的方法,然后感到震惊(计算每个块中的数字):所以你不得不求助于一些不那么优雅的东西:
使用numpy的
.tile
(docs):这将创建一个python列表,其中包含6个1,后跟54个0,表示6个小时。然后numpy
.tile
方法将这个模式复制4次,得到一个表示24小时的数组。你知道吗派对迟到:
相关问题 更多 >
编程相关推荐