在NumPy中x.shape [0] vs x [0] .shape

时间:2018-01-07 05:27:39

标签: python arrays numpy

假设我有一个带

的数组

x.shape = (10,1024)

当我尝试打印x [0] .shape

x[0].shape

它打印1024

当我打印x.shape [0]

x.shape[0]

它打印10

我知道这是一个愚蠢的问题,也许还有另外一个问题,但有人可以向我解释一下吗?

4 个答案:

答案 0 :(得分:3)

x是一个2D数组,也可以看作是1D数组的数组,有10行和1024列。 x[0]是第一个具有1024个元素的1D子阵列(x中有10个这样的1D子阵列),x[0].shape给出了该子阵列的形状,成为1元组 - (1024, )

另一方面,x.shape是一个2元组,代表x的形状,在本例中为(10, 1024)x.shape[0]给出了该元组中的第一个元素,即10

这是一个包含一些较小数字的演示,希望更容易理解。

x = np.arange(36).reshape(-1, 9)
x

array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8],
       [ 9, 10, 11, 12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23, 24, 25, 26],
       [27, 28, 29, 30, 31, 32, 33, 34, 35]])

x[0]
array([0, 1, 2, 3, 4, 5, 6, 7, 8])

x[0].shape
(9,)

x.shape
(4, 9)

x.shape[0]
4

答案 1 :(得分:2)

namespace App\Exports; use Maatwebsite\Excel\Concerns\Exportable; use Maatwebsite\Excel\Concerns\WithMultipleSheets; use Maatwebsite\Excel\Concerns\WithEvents; use Maatwebsite\Excel\Concerns\RegistersEventListeners; use Maatwebsite\Excel\Events\BeforeExport; use Maatwebsite\Excel\Events\BeforeWriting; class TechMatrixExport implements WithMultipleSheets, WithEvents { use Exportable, RegistersEventListeners; public function registerEvents(): array { return [ // Handle by a closure. BeforeExport::class => function(BeforeExport $event) { $event->writer->getProperties()->setCreator('You')->setTitle("Title"); }, BeforeWriting::class => function(BeforeWriting $event) { $event->writer->setActiveSheetIndex(0); }, ]; } public function sheets(): array { $sheets = []; $sheets[] = new TechnologiesSheet(); $sheets[] = new NotesSheet(); $sheets[] = new InputsSheet(); $sheets[] = new ReferencesSheet(); return $sheets; } } 将给出数组第一行的长度。 x[0].shape将给出数组中的行数。在您的情况下,它将给出输出10。如果您输入x.shape[0],它将打印出列数,即1024。如果您输入x.shape[1],则将给出错误,因为我们正在工作在二维数组上,我们没有索引。让我用一个简单的示例,通过采用尺寸为3x4的零的二维数组,为您解释'形状'的所有用法。

x.shape[2]

答案 2 :(得分:1)

x[0].shape为您提供第一行的长度。 x.shape[0]为您提供'x'维度的第一个组件,1024行乘10列。

答案 3 :(得分:0)

x.shape[0]将给出数组中的行数。

x[0]x的第一行,因此x[0].shape将提供第一行的长度。