np.arange создает матрицу нулевых значений при изменении размера - PullRequest
0 голосов
/ 30 октября 2018

Вот код, который я использую:

import numpy as np
import pandas as pd
from pandas import DataFrame, Series
animals = DataFrame(np.arange(16).resize(4, 4), columns=['W', 'X', 'Y', 'Z'], index=['Dog', 'Cat', 'Bird', 'Mouse'])
print(animals)

Вывод, который я получаю для этого:

         W    X    Y    Z
Dog    NaN  NaN  NaN  NaN
Cat    NaN  NaN  NaN  NaN
Bird   NaN  NaN  NaN  NaN
Mouse  NaN  NaN  NaN  NaN

Вывод, который я ожидаю:

         W    X    Y    Z
Dog      0    1    2    3
Cat      4    5    6    7
Bird     8    9   10   11
Mouse    12   13   14   15

Однако, если я бегу только:

print(np.arange(16))

вывод, который я получаю:

[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]

Ответы [ 3 ]

0 голосов
/ 30 октября 2018

Из документов для изменить размер : «Изменить форму и размер массива на месте». Таким образом, ваш звонок на resize возвращает None.

Вы хотите reshape. Как в np.arange(16).reshape(4, 4)

0 голосов
/ 30 октября 2018

Просто добавьте к ответу выше, документы для resize:

ndarray.resize(new_shape, refcheck=True)

Изменение формы и размера массива на месте.

Следовательно, в отличие от reshape, resize не создает новый массив. На самом деле np.arange(16).resize(4, 4) дает None, поэтому вы получаете Nan значения.

Использование reshape возвращает новый массив:

 ndarray.reshape(shape, order='C')

Возвращает массив, содержащий те же данные с новой формой

.

0 голосов
/ 30 октября 2018

использовать изменить

import pandas as pd
animals = pd.DataFrame(np.arange(16).reshape(4, 4), columns=['W', 'X', 'Y', 'Z'], index=['Dog', 'Cat', 'Bird', 'Mouse'])
print(animals)

или используйте numpy.resize ()

np.resize(np.arange(16),(4, 4))

используя resize, вам нужно передать массив в качестве аргумента

import pandas as pd
animals = pd.DataFrame(np.resize(np.arange(16),(4, 4)), columns=['W', 'X', 'Y', 'Z'], index=['Dog', 'Cat', 'Bird', 'Mouse'])
print(animals)

ndarray.resize () выполнит операцию на месте. Поэтому предварительно вычислите размер, а затем создайте фрейм данных

a=np.arange(16)
a.resize(4,4)
import pandas as pd
animals = pd.DataFrame(a, columns=['W', 'X', 'Y', 'Z'], index=['Dog', 'Cat', 'Bird', 'Mouse'])
print(animals)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...