- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我接受了一个用户提供的输入字符串数组,它看起来像下面这样:
x=[100.0,150.0,200.0:300.0:10.0,300.0,350.0:400.0:10.0,500.0,600.0:700.0:10.0,800.0,900.0]
由于这些是用户提供的列表,间隔切片的顺序 [例如 200.0:300.0:10.0] 可能会有所不同,没有切片的单个条目也会有所不同。
然后我在 ':,"分隔符上拆分,这样我就可以从 float 转换为 string 以便在 numpy.r_ 中使用。然后我得到以下列表:
x_arr=[100.0,150.0,200.0,300.0,10.0,300.0,350.0,400.0,10.0,500.0,600.0,700.0,10.0,800.0,900.0]
我想跟踪存在“:”定界符的原始索引以及不存在“:”定界符的位置,以便我可以通过以下方式将原始数组重建为一系列 float :
np.r_[100.0, 150.0, slice(200.0,300.0,10.0), 300, slice(350.0,400.0,10.0), 500.0, slice(600,700,10),800,900]
问题是如何以一致的方式跟踪从原始数组到新数组的索引变化。对于如何使用随机用户提供的输入最好地实现这一点,我将不胜感激。
这是我考虑过的一种方法:
我将原始数组拆分为“,”以查找缺少“:”分隔符的元素:
x_no_colon=re.split((','),x)
xh=[]
for ind in x_no_colon:
inds_wo_colon=re.findall(":",ind)
xh.append(inds_wo_colon)
使用上面的例子会返回以下内容:
xh=[[],[],[":",":"],[],[":",":"],[],[":",":"],[],[]]
然后我可以通过以下方式识别没有冒号的索引:
x_wo_colons = [item for item in range(len(xh)) if xh[item] == []]
会返回:
x_wo_colons=[0,1,3,6,8,9]
然后我使用在“:”上拆分的数组找到带有“:”分隔符的索引:
colon_arr=re.split('(:)',x)
prelim_x_with_colon=[item for item in range(len(colon_arr)) if colon_arr[item] == ':']
x_w_colon=[]
for i in prelim_x_with_colon:
if i == 1 and colon_arr[1] != ':':
x_w_colon.append(i)
elif i == 1 and colon_arr[1] == ':':
x_w_colon.append(i-1)
else:
x_w_colon_append(i-1)
对于存在冒号和不存在冒号的索引列表,唯一要做的就是从带冒号的列表中删除不带冒号的索引。我在这里发现的问题是,对于不同的列表,每次都很难使索引正确。这可能是因为我的方法很复杂,并且我为不同的列表使用了两个不同的数组。
问题是如何以一致的方式跟踪从原始数组到新数组的索引变化。对于如何使用随机用户提供的输入最好地实现这一点,我将不胜感激。
提前致谢!
最佳答案
考虑到某些项目看起来像切片,您是否正在尝试将此输入字符串/列表转换为数字列表/数组?
这是我对您的字符串进行的实验(减去 []
)。我会留下大量的试验和错误。这可能是有启发性的。
In [957]: txt='100.0,150.0,200.0:300.0:10.0,300.0,350.0:400.0:10.0,500.0,600.0:700.0:10.0,800.0,900.0'
我假设 ,
是主要的分隔符,:
是次要的
In [958]: txt.split(',')
Out[958]:
['100.0',
'150.0',
'200.0:300.0:10.0',
'300.0',
'350.0:400.0:10.0',
'500.0',
'600.0:700.0:10.0',
'800.0',
'900.0']
定义一个函数来处理这些项目之一:
In [960]: def foo(astr):
...: items=astr.split(':')
...: if len(items)==1:
...: return float(items[0])
...: else:
...: return slice(*[float(i) for i in items])
...:
In [961]: [foo(s) for s in txt.split(',')]
Out[961]:
[100.0,
150.0,
slice(200.0, 300.0, 10.0),
300.0,
slice(350.0, 400.0, 10.0),
500.0,
slice(600.0, 700.0, 10.0),
800.0,
900.0]
In [962]: np.r_[_]
Out[962]:
array([100.0, 150.0, slice(200.0, 300.0, 10.0), 300.0,
slice(350.0, 400.0, 10.0), 500.0, slice(600.0, 700.0, 10.0), 800.0,
900.0], dtype=object)
它像我预期的那样创建切片,但是 np.r_
不接受文字切片;它需要 :
语法。实际上,是 Python 解释器将 [a:b:c]
转换为 slice(a,b,c)
对象。似乎我们最近解决了这个问题。与其打架,不如直接跳到 arange
(因为 np.r_
将 slices
转换为 arange
或 linspace
无论如何)。
In [963]: def foo(astr):
...: items=astr.split(':')
...: if len(items)==1:
...: return float(items[0])
...: else:
...: return np.arange(*[float(i) for i in items])
In [964]: [foo(s) for s in txt.split(',')]
Out[964]:
[100.0,
150.0,
array([ 200., 210., 220., 230., 240., 250., 260., 270., 280., 290.]),
300.0,
array([ 350., 360., 370., 380., 390.]),
500.0,
array([ 600., 610., 620., 630., 640., 650., 660., 670., 680., 690.]),
800.0,
900.0]
In [965]: np.concatenate(_)
...
ValueError: zero-dimensional arrays cannot be concatenated
糟糕,concatenate
不喜欢单个数字;
In [966]: def foo(astr):
...: items=astr.split(':')
...: if len(items)==1:
...: return [float(items[0])]
...: else:
...: return np.arange(*[float(i) for i in items])
In [967]: [foo(s) for s in txt.split(',')]
Out[967]:
[[100.0],
[150.0],
array([ 200., 210., 220., 230., 240., 250., 260., 270., 280., 290.]),
[300.0],
array([ 350., 360., 370., 380., 390.]),
[500.0],
array([ 600., 610., 620., 630., 640., 650., 660., 670., 680., 690.]),
[800.0],
[900.0]]
In [968]: np.concatenate(_)
Out[968]:
array([ 100., 150., 200., 210., 220., 230., 240., 250., 260.,
270., 280., 290., 300., 350., 360., 370., 380., 390.,
500., 600., 610., 620., 630., 640., 650., 660., 670.,
680., 690., 800., 900.])
看起来不错。
=======================
在最近的回答中,我确实找到了一种将文字 slice
对象传递给元组中的 r_
的方法。
In [969]: def foo1(astr):
...: items=astr.split(':')
...: if len(items)==1:
...: return float(items[0])
...: else:
...: return slice(*[float(i) for i in items])
...
In [971]: tuple([foo1(s) for s in txt.split(',')])
Out[971]:
(100.0,
150.0,
slice(200.0, 300.0, 10.0),
300.0,
slice(350.0, 400.0, 10.0),
500.0,
slice(600.0, 700.0, 10.0),
800.0,
900.0)
In [972]: np.r_[tuple([foo1(s) for s in txt.split(',')])]
Out[972]:
array([ 100., 150., 200., 210., 220., 230., 240., 250., 260.,
270., 280., 290., 300., 350., 360., 370., 380., 390.,
500., 600., 610., 620., 630., 640., 650., 660., 670.,
680., 690., 800., 900.])
关于python - 使用定界符 python 跟踪数组中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38689028/
有没有办法在 xdebug 跟踪输出中查看 echo 或 print 函数调用。我正在为我在我的服务器中运行的所有脚本寻找一个全局配置(或一种方法)。 例子: 我希望跟踪输出显示 echo 调用。默
我将应用程序从2.0.0M2升级到了2.1.0,但是当我尝试运行该应用程序时,出现此错误: Note: /Volumes/Info/proyectos-grails/vincoorbis/Member
我如何在共享点中执行日志记录。我想使用跟踪。 以便它记录 12 个配置单元日志。 最佳答案 微软提供了一个例子: http://msdn.microsoft.com/en-us/library/aa9
如何跟踪 eclipse 和 android 模拟器的输出。我习惯于在 Flash 和 actionscript 中这样做。 在 AS3 中它将是: trace('我的跟踪语句'); 最佳答案 您有几
是否可以在 Postgresql 上进行查询跟踪?我在带有 OLEDB 界面的 Windows 上使用 9.0。 此外,我需要它是实时的,而不是像默认情况下那样缓冲... 最佳答案 我假设您的意思是在
第一天 HaxeFlixel 编码器。愚蠢的错误,但谷歌没有帮助我。 如何使用 Haxe、NME 和 Flixel 追踪到 FlashDevelop 输出。它在使用 C++ 执行时有效,但对 Flas
我有一个关于 iPhone 上跟踪触摸的快速问题,我似乎无法就此得出结论,因此非常感谢任何建议/想法: 我希望能够跟踪和识别 iPhone 上的触摸,即。基本上每次触摸都有一个起始位置和当前/移动位置
我正在做我的大学项目,我只想跟踪错误及其信息。错误信息应该与用户源设备信息一起存储在数据库中(为了检测源设备,我正在使用MobileDetect扩展名)。我只想知道应该在哪里编写代码,以便获得所有错误
我正在 Azure 中使用多个资源,流程如下所示: 从 sftp 获取文件 使用 http 调用的数据丰富文件 将消息放入队列 处理消息 调用一些外部电话 传递数据 我们如何跟踪上述过程中特定“运行”
在我的 WCF 服务中,当尝试传输大数据时,我不断收到错误:底层连接已关闭:连接意外关闭 我想知道引发此错误的具体原因,因此我设置了 WCF 跟踪并可以读取 traces.svclog 文件。 问题是
我的目标是在 Firebase Analytics 中获取应用数据,在 Google Universal Analytics 中获取其他自定义数据和应用数据。 我的问题是我是否在我的应用上安装 Fir
我正在 Azure 中使用多个资源,流程如下所示: 从 sftp 获取文件 使用 http 调用的数据丰富文件 将消息放入队列 处理消息 调用一些外部电话 传递数据 我们如何跟踪上述过程中特定“运行”
我们正在考虑跟踪用户通过 Tridion 管理的网站的旅程的要求,然后能够根据此行为将此用户识别为“潜在客户”,然后如果他们在之后没有返回,则触发向此用户发送电子邮件X 天。 SmartTarget
在 Common Lisp 中,函数(跟踪名称)可用于查看有关函数调用的输出。 如果我的函数是用局部作用域声明的,我如何描述它以进行跟踪? 例如,如何跟踪栏,如下: (defun foo (x)
有什么方法可以检测文本框的值是否已更改,是用户明确更改还是某些 java 脚本代码修改了文本框?我需要检测这种变化。 最佳答案 要跟踪用户更改,您可以添加按键处理程序: $(selector).key
int Enable ( int pid) { int status; #if 1 { printf ( "child pid = %d \n", pid ); long ret =
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
我有以下测试代码: #include int main(void) { fprintf(stderr, "This is a test.\n"); int ret = open("s
我有一个闭源 Java 应用程序,供应商已为其提供了用于自定义的 API。由于我没有其他文档,我完全依赖 API 的 javadoc。 我想跟踪特定用例在不同类中实际调用的方法。有什么办法可以用 ec
我正在学习 PHP。我在我的一个 php 函数中使用了如下所示的 for 循环。 $numbers = $data["data"]; for ($i = 0;$i send($numbers[
我是一名优秀的程序员,十分优秀!