假设我有一个带
的数组 x.shape = (10,1024)
当我尝试打印x [0] .shape
时x[0].shape
它打印1024
当我打印x.shape [0]
时x.shape[0]
它打印10
我知道这是一个愚蠢的问题,也许还有另外一个问题,但有人可以向我解释一下吗?
答案 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
将提供第一行的长度。