1

两个向量:

A = ['1','2','3','4','5','6','','6','7','8','','1','2','3','','']
B = ['2','3','4','','5','','','6','','7','8','9','1','4']

如何仅针对具有两个现有元素的值绘制 A 与 B?目前,我必须遍历每个向量并检查 int() 在同一行是否 > 0。

4

2 回答 2

1

如果您None输入空格,则可以连接两个向量并删除具有缺失值的对,如下所示:

>>> A = [1,2,3,4,5,6,None,6,7,8,None,1,2,3,None,None]
>>> B = [2,3,4,None,5,None,None,6,None,7, 8,9,1,4]
>>> filter(lambda (a,b): a is not None and b is not None, map(lambda a,b: (a,b), A,B))
[(1, 2), (2, 3), (3, 4), (5, 5), (6, 6), (8, 7), (1, 9), (2, 1), (3, 4)]

然后您可以使用结果进行绘图。

在评论中回答您的问题,如果您使用 Python 的 CSV 模块,那么它将正确解析带有空格的 CSV 并将空格解析为空字符串:

$ cat t.csv 
1,2,,4
1,,3,,
$ python
Python 2.7.1 (r271:86832, Mar 18 2011, 09:09:48) 
[GCC 4.5.0 20100604 [gcc-4_5-branch revision 160292]] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import csv
>>> with open('t.csv') as f:
...   reader = csv.reader(f)
...   for row in reader:
...     print row
... 
['1', '2', '', '4']
['1', '', '3', '', '']
>>> 
于 2013-04-19T16:26:51.510 回答
1

您可以使用zip配对元素,然后(如果它们是字符串)all选择那些不是空字符串的元素,因为bool(some_str)如果它是空的则为 False,否则为 True。例如:

>>> A = ['1','2','3','4','5','6','','6','7','8','','1','2','3','','']
>>> B = ['2','3','4','','5','','','6','','7','8','9','1','4']
>>> pairs = filter(all, zip(A, B))
>>> pairs
[('1', '2'), ('2', '3'), ('3', '4'), ('5', '5'), ('6', '6'), ('8', '7'), ('1', '9'), ('2', '1'), ('3', '4')]

不过,我可能会使用列表理解,更像是:

>>> [map(float, pair) for pair in zip(A, B) if all(pair)]
[[1.0, 2.0], [2.0, 3.0], [3.0, 4.0], [5.0, 5.0], [6.0, 6.0], [8.0, 7.0], [1.0, 9.0], [2.0, 1.0], [3.0, 4.0]]

并同时获取数字。

于 2013-04-19T17:11:28.447 回答