English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

NumPy 创建数组

O ndarray array pode ser criado não apenas usando o construtor de ndarray básico, mas também pelas seguintes maneiras:

numpy.empty

O método numpy.empty é usado para criar um array não inicializado com forma específica (shape), tipo de dados (dtype):

numpy.empty(shape, dtype = float, order = 'C')

Retorna um novo array com a forma e o tipo fornecidos, sem inicializar os itens.

Parâmetro

prototype - Forma do array de zeros.dtype(opcional) - Tipo de dados de saída necessários para o array, por exemplo numpy.int8. valor padrão é numpy.float64。order(opcional, padrão: 'C') - Existem duas opções "C" e "F", que representam, respectivamente, a prioridade da linha e da coluna, na ordem de armazenamento dos elementos na memória do computador.

Retorno: Um array com a forma do array fornecido, mas sem inicializar o tipo de dados e a ordem (aleatórios).

>>> import numpy as np
>>> np.empty([2, 2])
array([[1, 0.],
       [0., 1.]])
>>> np.empty([2, 2], dtype=int)
array([[4607182418800017408, 0],
       [ 0, 4607182418800017408])
>>>
Atenção:Atenção − os elementos do array são valores aleatórios, pois não foram inicializados.

numpy.empty_like

numpy.empty retorna um novo array com a mesma forma e tipo do array fornecido.

numpy.empty_like(prototype, dtype=None, order='K', subok=True, shape=None)

Retorna um novo array com a mesma forma e tipo que o array fornecido

Parâmetro

prototype - A forma e o tipo do array de origem definem essas mesmas propriedades do array retornado.dtype - Cobertura do tipo de dados do resultado.order - Cobertura do layout de memória do resultado. Se prototypeFortran contínuo, 'A' representa 'F', caso contrário, 'C'.'K' representa que o layout do prototype deve coincidir o mais possível.subok - Se for True, o array recém-criado usará o subtipo de 'a', caso contrário, será o array de classe base. O padrão é True.shape - Cobertura da forma do resultado. Se order = 'K' e o número de dimensões não mudar, tentará manter a ordem, caso contrário, sugere order = 'C'.

Retorno: Novo array com a mesma forma e tipo que o array fornecido.

>>> import numpy as np
>>> a = (1,2,3], [4,5,6]) # a é um array-like
>>> np.empty_like(a)
array([[ 6917529027641081856, -6917520256071729910, 98],
       [ 0, 0, 0]]
>>> a = np.array([1., 2., 3.], [4.,5.,6.]])
>>> np.empty_like(a)
array([[ 2.68156159e+154, 2.68156159e+154, 3.32479618e+181],
       [ 1.78476163e+185, -1.73059781e-077, 4.21535080e-309])

numpy.zeros

Cria um array de tamanho especificado, preenchido com zeros:

numpy.zeros(shape, dtype = float, order = 'C')

Parâmetro

shape - Forma do array de zeros.dtype - Tipo de dados de saída necessários para o array, por exemplo numpy.int8. valor padrão é numpy.float64。order - {'C', 'F'}, opcional, padrão: 'C', indica que os dados sejam armazenados na memória em estilo de linha (C) ou coluna (Fortran).

Retorno: Array de zeros com a forma, tipo e ordem do array fornecido.

>>> import numpy as np
>>> np.zeros(5)
array([0., 0., 0., 0., 0.])
,), dtype=[('x', 'i5,), dtype=int)
array([0, 0, 0, 0, 0])
,), dtype=[('x', 'i2, 1))
[0.]])
       >>> np.zeros((
>>> s = (2,2)
,), dtype=[('x', 'i2,), dtype=[('x', 'i4'), ('y', 'i4')] # dtype personalizado
array([(0, 0), (0, 0)], dtype=[('x', '<i4'' ),="" ('y',="" '

numpy.zeros_like

zeros_like retorna um array de zeros com a mesma forma e tipo do array fornecido.

numpy.zeros_like(a, dtype=None, order='K', subok=True, shape=None)[fonte]

Parâmetro

a - Uma propriedade que limita a forma e o tipo de dados do array retornado.dtype - O tipo de dados de saída necessário para o array.order - Cobertura do layout de memória do resultado.subok - Se for True, o array recém-criado usará o subtipo de 'a', caso contrário, será o array de classe base. O padrão é True.shapeint - Cobertura da forma do resultado.

Retorna um array com a mesma forma e tipo de zero.

>>> import numpy as np
>>> x = np.arange(6)
>>> x = x.reshape((2, 3))
>>> print(x)
[[0 1 2]
 [3 4 5]]
>>> np.zeros_like(x)
array([[0, 0, 0],
       [0, 0, 0]]
>>> y = np.arange(3, dtype=float)
>>> y
array([0., 1., 2.])
>>> np.zeros_like(y)
array([0., 0., 0.])

numpy.ones

Cria um array com a forma especificada, os elementos do array são preenchidos com 1 para preencher:

numpy.ones(shape, dtype=None, order='C')

Parâmetro

shape - Forma do array.dtype - Tipo de dados, opcionalorder - 'C' para arrays de linha de C ou 'F' para arrays de coluna do FORTRAN

>>> import numpy as np
>>> np.ones(5)
array([1., 1., 1., 1., 1.])
>>> np.ones(5,), dtype=int)
array([1, 1, 1, 1, 1])
>>> np.ones(2, 1))
array([[1.,
       [1.]])
>>> s = (2,2)
>>> np.ones(s)
array([[1., 1.,
       [1., 1.]])

numpy.ones_like

zeros_like retorna um array com a mesma forma e tipo de dados do array fornecido.

numpy.ones_like(a, dtype=None, order='K', subok=True, shape=None)

Parâmetro

a - Uma propriedade que limita a forma e o tipo de dados do array retornado.dtype - O tipo de dados de saída necessário para o array.order - Cobertura do layout de memória do resultado.subok - Se for True, o array recém-criado usará o subtipo de 'a', caso contrário, será o array de classe base. O padrão é True.shape - Cobertura da forma do resultado.

Retorna um array com a mesma forma e tipo de zero.

>>> import numpy as np
>>> x = np.arange(6)
>>> x = x.reshape((2, 3))
>>> x
array([[0, 1, 2],
       [3, 4, 5])
>>> np.ones_like(x)
array([[1, 1, 1],
       [1, 1, 1])
>>> y = np.arange(3, dtype=float)
>>> y
array([0., 1., 2.])
>>> np.ones_like(y)
array([1., 1., 1.])

numpy.arange

numpy.arange([start],stop,[step],dtype=None)

Retorna os valores de intervalo uniforme dados.
Gera valores dentro do intervalo semi-aberto (isto é, o intervalo que inclui start mas não inclui stop). Para parâmetros inteiros, esta função é equivalente à função integrada do Python range, mas retorna ndarray em vez de lista. [start, stop)

Parâmetro

start - O início do intervalo. O intervalo inclui o valor. O valor inicial padrão é 0.stop - O intervalo termina. Este intervalo não inclui o valor, a menos que em alguns casos, o step não seja um inteiro e a arredondamento de ponto flutuante afete o comprimento de out.step - O espaçamento entre os valores. Para qualquer saída, é a distância entre os dois valores adjacentes, o passo padrão é1。dtype - Tipo de dados do array de saída.

Retorno: Array de valores com intervalos uniformes.

>>> import numpy as np
>>> np.arange(3)
array([0, 1, 2])
>>> np.arange(3.0)
array([0., 1., 2.])
>>> np.arange(3,7)
array([3, 4, 5, 6])
>>> np.arange(3,7,2)
array([3, 5])

numpy.linspace

A função numpy.linspace é usada para criar um array unidimensional, onde o array é composto por uma sequência aritmética, no formato a seguir:

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

Parâmetro

start - O valor inicial da sequência.stop - O valor final da sequência, se endpoint for true, este valor está incluído na sequência.num - A quantidade de amostras de passo igual a ser gerada, o valor padrão é50。endpoint - Este valor é true quando a sequência contém o valor stop, caso contrário, não contém, o padrão é True.retstep - Se for True, o array gerado mostrará espaçamento, caso contrário, não mostrará.dtype - O tipo de dados do ndarray.

A seguir, o exemplo usa três parâmetros, configurando o ponto de partida como 1 ,o ponto final é 10,o número de séries é 10。

>>> import numpy as np
>>> a = np.linspace(1,10,10)
>>> print(a)
[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
>>> a = np.linspace(10, 20, 5, endpoint =  False)
>>> print(a)
[10. 12. 14. 16. 18.]
>>> a =np.linspace(1,10,10,retstep= True)
>>> print(a)
(array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10).reshape([ 1.0)
>>> b =np.linspace(1,10,10).reshape([10,1])
>>> print(b)
[[ 1.]
 [ 2.]
 [ 3.]
 [ 4.]
 [ 5.]
 [ 6.]
 [ 7.]
 [ 8.]
 [ 9.]
 [10.]]

numpy.asarray

Conversão direta dos tipos de dados básicos do Python (como lista, tupla, etc.) para gerar ndarray:

>>> import numpy as np
>>> ls1 = [10, 42, 0, -17, 30]
>>> nd1 =np.array(ls1)
>>> print(nd1)
[ 10 42 0 -17 30]
>>>
>>> print(type(nd1))

numpy.asarraysemelhante numpy.arrayMas o parâmetro numpy.asarray tem apenas três, dois a menos do que numpy.array.

numpy.asarray(a, dtype = None, order = None)

Parâmetro

a - Parâmetros de entrada de qualquer forma, podem ser, lista, tupla da lista, tupla, tupla da tupla, lista da tupla, array multidimensional.dtype - Tipo de dados, opcional.order - A quantidade de amostras de passo igual a ser gerada, o valor padrão é50。endpoint - Opcional, há duas opções "C" e "F", que representam respectivamente, a prioridade de linha e a prioridade de coluna, a ordem de armazenamento dos elementos na memória do computador.

>>> import numpy as np
>>> x = [1,2,3]
>>> a = np.asarray(x)
>>> a
array([1, 2, 3])
>>> x = (1,2,3)
>>> a = np.asarray(x)
>>> print(a)
[1 2 3]
>>> x = [(1,2,3),(4,5)]
>>> a = np.asarray(x)
>>> print(a)
[(1, 2, 3) (4, 5)]
>>> x = [1,2,3]
>>> a = np.asarray(x, dtype=float)
>>> print(a)
[1. 2. 3.]

numpy.frombuffer

numpy.frombuffer é usado para implementar arrays dinâmicos.
O numpy.frombuffer aceita o parâmetro de entrada buffer, lendo em forma de fluxo e convertendo para objeto ndarray.

numpy.frombuffer(buffer, dtype=float, count= -1, offset = 0)
Atenção:Quando o buffer é uma string, o Python3 O padrão str é do tipo Unicode, então é necessário converter para bytestring adicionando b no início da str.

Parâmetro

buffer - Pode ser qualquer objeto, lido em forma de fluxo.dtype - Retorna o tipo de dados do array, opcionalcount - Número de dados lidos, o padrão é-1,ler todos os dados.offset - Posição de início da leitura, o padrão é 0.

>>> import numpy as np
>>> s = b'Hello w3codebox'
>>> a = np.frombuffer(s, dtype='S1)
>>> print(a)
[b'H' b'e' b'l' b'l' b'o' b' ' b'L' b'i' b'd' b'i' b'h' b'u' b'o']

numpy.fromiter

O método numpy.fromiter constrói um objeto ndarray a partir de um objeto iterável, retornando um array unidimensional.

numpy.fromiter(iterable, dtype, count=-1)

Parâmetro

iterable - Objeto iterável.dtype - Retorna o tipo de dados do arraycount - Número de dados lidos, o padrão é-1,ler todos os dados.

>>> import numpy as np
>>> # Usar função range para criar objeto lista
>>> list=range(5)
>>> it=iter(list)
>>> x=np.fromiter(it, dtype=float)
>>> print(x)
[0. 1. 2. 3. 4.]

Gerando arrays com o módulo random

Para treinar o modelo de maneira mais eficaz e melhorar o desempenho do modelo, algumas inicializações precisam atender a certas condições, como distribuição normal ou uniforme, etc. Aqui são apresentados vários métodos comuns do módulo np.random, conforme a tabela a seguir.

FunçãoDescrição
np.random.random生成0到1之间的随机数
np.random.uniform生成均勻分布的随机数
np.random.randn生成标准正态的随机数
np.random.randint生成随机的整数
np.random.normal生成正态分布
np.random.shuffle随机打乱顺序
np.random.seed设置随机数种子
random_sample生成随机的浮点数
>>> import numpy as np
>>> # 生成全是 0 的 3x3 矩阵
>>> nd5 =np.zeros([3, 3])
>>> print("nd5 =\n", nd5)
nd5 =
 [[0. 0. 0.]]
 [0. 0. 0.]
 [0. 0. 0.]]
>>> # 生成全是 1 的 3x3 矩阵
>>> nd6 = np.ones([3, 3])
>>> print("nd6 =\n", nd6)
nd6 =
 [[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]
>>>
>>> # 生成 4 阶的单位矩阵
>>> nd7 = np.eye(4)
>>> print("nd7 =\n", nd7)
nd7 =
 [[1. 0. 0. 0.]
 [0. 1. 0. 0.]
 [0. 0. 1. 0.]
 [0. 0. 0. 1.]]
>>> # 生成 4 阶对角矩阵
>>> nd8 = np.diag([1, 8, 3, 10])
>>> print("nd8 =\n", nd8)
nd8 =
 [[ 1 0 0 0]
 [ 0 8 0 0]
 [ 0 0 3 0]
 [ 0 0 0 10]]