NumPy: есть ли лучший способ построить определенную матрицу с определенным значением? - PullRequest
2 голосов
/ 08 мая 2019

Мне удалось построить матрицу с помощью этого куска кода

c_bed = np.append(np.array([1, 2, 3]), np.nan).reshape(4, 1)
c_bath = np.array([1, 1, 2, 2], dtype=np.float).reshape(4, 1)
ds = np.append(c_bed, c_bath, axis=1)

, что дает

array([[ 1.,  1.],
       [ 2.,  1.],
       [ 3.,  2.],
       [nan,  2.]])

вывод - именно то, что я хочу, хотя мне интересно, есть ли лучший способ построить эту матрицу?

Ответы [ 4 ]

2 голосов
/ 08 мая 2019

Есть ли причина не использовать это matrix = numpy.array([[1, 1], [2, 1], [3, 2], [numpy.nan, 2]])?

2 голосов
/ 08 мая 2019

Как насчет использования zip_longest

from itertools import zip_longest
np.array(list(zip_longest([1,2,3],[1,1,2,2],fillvalue=np.nan)))
Out[228]: 
array([[ 1.,  1.],
       [ 2.,  1.],
       [ 3.,  2.],
       [nan,  2.]])
1 голос
/ 08 мая 2019

Если у вас есть

beds = [1, 2, 3]
baths = [1, 1, 2, 2]
data = (beds, baths)

Вы можете сделать следующее:

ds = np.full((max(map(len, data)), 2), np.nan)
ds[:len(beds), 0] = beds
ds[:len(baths), 1] = baths
0 голосов
/ 08 мая 2019

Отказ от ответственности: следующий способ может быть самым коротким методом, но он, безусловно, не самый здоровый. Я бы не использовал его в рабочем коде.

np.c_[[2,4,6,np.nan],2:6]//2
# array([[ 1.,  1.],
#        [ 2.,  1.],
#        [ 3.,  2.],
#        [nan,  2.]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...