使用多维数组中的每个第一个元素

Pet*_*ver 4 python arrays list slice multidimensional-array

我原以为如果你运行 Maybe print mdarray[::][1],你会打印数组中每个元素的第一个子元素。我这哪里做错了?

我特别需要这个,因为p.plot(x,y[::][1])我绝对不想使用for 循环,因为它非常慢,除非我把事情弄糊涂了。

我错了什么?谢谢!

编辑

我仍然不知道我从哪里得到了 [::] 东西,但我解决了我的问题

p.plot(x,c[:,1],color='g',label="Closing value")

或者

p.plot(x,[i[1] for i in c],color='g',label="Closing value")
Run Code Online (Sandbox Code Playgroud)

时间上似乎没有任何明显的差异,所以我想我会使用第二个,因为它对我来说看起来更Pythonic/可读。或者我错过了什么?

感谢您的所有帮助!

Ali*_*lik 5

如果mdarray是一个 numpy 数组,您可以使用以下命令访问它的第一列mdarray[:,0]

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])
Run Code Online (Sandbox Code Playgroud)

UPD

快速而肮脏的测试

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
Run Code Online (Sandbox Code Playgroud)