如何在一行中按多个维度对ndarray
进行切片?检查以下代码段中的最后一行。这似乎很基本,但它给了一个惊喜。。。但为什么呢?你知道吗
import numpy as np
# create 4 x 3 array
x = np.random.rand(4, 3)
# create row and column filters
rows = np.array([True, False, True, False])
cols = np.array([True, False, True])
print(x[rows, :].shape == (2, 3)) # True ... OK
print(x[:, cols].shape == (4, 2)) # True ... OK
print(x[rows][:, cols].shape == (2, 2)) # True ... OK
print(x[rows, cols].shape == (2, 2)) # False ... WHY???
由于
rows
和cols
是布尔数组,因此在执行此操作时:就像:
即:
取
(0, 0)
和(2, 2)
处的值。另一方面,做:工作原理如下:
在本例中返回一个形状
(2, 2)
。你知道吗相关问题 更多 >
编程相关推荐