Apêndice A. NumPy avançado
Neste apêndice, vou aprofundar a biblioteca NumPy para computação de matrizes. Isto incluirá mais detalhes internos sobre o tipo ndarray e manipulações e algoritmos mais avançados de matrizes.
Este apêndice contém tópicos diversos e não precisa necessariamente de ser lido linearmente. Ao longo dos capítulos, vou gerar dados aleatórios para muitos exemplos que usarão o gerador de números aleatórios padrão no módulo numpy.random:
In[11]:rng=np.random.default_rng(seed=12345)
A.1 Aspectos internos do objeto ndarray
O NumPy ndarray fornece uma forma de interpretar um bloco de dados de tipo homogéneo (contíguo ou em cadeia) como um objeto de matriz multidimensional. O tipo de dados, ou dtype, determina como os dados são interpretados como sendo de vírgula flutuante, inteiros, booleanos ou qualquer um dos outros tipos que temos estado a ver.
Parte do que torna o ndarray flexível é que cada objeto array é umastrided view num bloco de dados. Podes perguntar-te, por exemplo, como é que a vista do array arr[::2,
::-1] não copia quaisquer dados. A razão é que o ndarray é mais do que apenas um pedaço de memória e um tipo de dados; também tem informação de stridingque permite que o array se mova através da memória com tamanhos de passo variáveis. Mais precisamente, o ndarray consiste internamente no seguinte:
Um ponteiro para dados - istoé, um bloco de dados na RAM ou num ficheiro mapeado na memória
O tipo de dados ou dtype que descreve células de valor de tamanho fixo ...