Using every first element in a multidimensional array
我曾经认为,如果运行
我特别需要一个
我怎么了?谢谢!
编辑
我仍然不知道我从哪里得到了这件事,但我也解决了我的问题。
埃多克斯1〔2〕
或
1 | p.plot(x,[i[1] for i in c],color='g',label="Closing value") |
在时间上似乎没有任何明显的差别,所以我想我会用第二个,因为它看起来更像Python/可读性更强。还是我错过了什么?
谢谢你的帮助!
如果
1 2 3 4 5 6 7 8 9 10 | In [8]: mdarray = np.array([[1, 2, 4], [4, 5, 6], [7, 8, 9]]) In [9]: mdarray Out[9]: array([[1, 2, 4], [4, 5, 6], [7, 8, 9]]) In [10]: mdarray[:,0] Out[10]: array([1, 4, 7]) |
UPD
快速肮脏试验
1 2 3 4 5 6 7 | In [28]: mdarray = np.zeros((10000,10000)) In [29]: %timeit -n1000 [x[0] for x in mdarray] 1000 loops, best of 3: 2.7 ms per loop In [30]: %timeit -n1000 mdarray[:,0] 1000 loops, best of 3: 567 ns per loop |
。
你所做的:
你用的是
你可以做的是一个列表理解:
1 | [item[0] for item in mdarray] |
号
这将返回
谈论循环:一个(一次性)循环对于访问某个东西是相当有效的。在内部,所有的魔力函数(如上面的理解)都在迭代数据。
怎么样:
1 2 3 4 5 | >>> Matrix = [[x for x in range(5)] for x in range(5)] >>> Matrix [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]] >>> [item[0] for item in Matrix] [0, 0, 0, 0, 0] |
至于
不确定是使用数组还是列表,但对于python的列表:
Python2:
1 2 3 | >>> mdarray = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] >>> zip(*mdarray)[0] (1, 4, 7) |
Python3:
1 2 3 | >>> mdarray = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] >>> list(zip(*mdarray))[0] (1, 4, 7) |
。
或者对于索引0的特殊情况:
1 2 3 | >>> mdarray = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] >>> next(zip(*mdarray)) (1, 4, 7) |
。