【发布时间】:2011-07-10 03:08:54
【问题描述】:
我需要从给定的索引对数组进行切片,直到满足某个条件。
>>> a = numpy.zeros((10), dtype='|S1')
>>> a[2] = 'A'
>>> a[4] = 'X'
>>> a[8] = 'B'
>>> a
array(['', '', 'A', '', 'X', '', '', '', 'B', ''], dtype='|S1')
例如,对于上面的数组,我想要一个给定索引的子集,直到两个方向上的第一个非零值。例如,对于索引值 2、4、8,结果将是:
['', '', A, ''] # 2
['', X, '', '', ''] # 4
['', '', '', B, ''] # 8
关于使用 numpy API 的最简单方法有什么建议吗?学习 python 和 numpy,将不胜感激。谢谢!
【问题讨论】:
-
你能澄清你的问题吗?你是什么意思“直到两个方向的第一个非无值”?
-
您使用
object数组的事实(不是很常见,也不是很节省内存)在尝试确定非None 数组项的索引时会出现一个特殊问题。你能被说服使用固定字节的数据类型吗?如果您致力于objectdtype,那么当类型转换为bool时,任何“非无”都会评估为True是真的吗?其中任何一个都有助于简化很多事情。 -
@Paul 我正在使用
object数组来存储单个字符串。本质上,我只需要一个char数组。有没有替代的dtype我可以使用dtype? -
@armandino:对单字符串使用
dtype='|S1'(或简称dtype=str)。 -
@armandino:另外,如果你还没有注意到,在使用
dtype='S1'