добавление значений в массив NumPy - PullRequest
0 голосов
/ 16 мая 2019

У меня есть два разных массива b0 и b1, где: b0 = [1,2] b1 = [3,4] * * +1001

Я хочу, чтобы список [1-й элемент b0, 1-й элемент b1] был добавлен в новый массив B и аналогично: list [2nd element of b0, 2nd element of b1] для добавления в новый массив B и так далее ......

то есть мой новый массив должен выглядеть примерно так: Массив ([1,3], [2,4])

Ниже мой код:

b0=np.array([1,2])
b1=np.array([3,4])

for val in range(len(b1)):
    L=[b0[val],b1[val]]
    B=np.append(L,axis=0)
print(B)

Я теряюсь при ошибке значений позиционных аргументов. Пожалуйста, помогите мне исправить это.

Ответы [ 3 ]

0 голосов
/ 16 мая 2019

Использование np.append здесь, на мой взгляд, не самый удобный способ. Вы всегда можете преобразовать список python в np.array, и в этом случае гораздо проще просто использовать zip.

b0=np.array([1,2])
b1=np.array([3,4])
B=np.array(list(zip(b0,b1)))

выход:

>>> B
array([[1, 3],
       [2, 4]])
0 голосов
/ 16 мая 2019
In [51]: b0=np.array([1,2]) 
    ...: b1=np.array([3,4])                                                  

Неверный заказ:

In [56]: np.vstack((b0,b1))                                                  
Out[56]: 
array([[1, 2],
       [3, 4]])

но вы можете перенести его:

In [57]: np.vstack((b0,b1)).T                                                
Out[57]: 
array([[1, 3],
       [2, 4]])

stack - конкатенатор более общего назначения

In [58]: np.stack((b0,b1), axis=1)                                           
Out[58]: 
array([[1, 3],
       [2, 4]])

или с:

In [59]: np.column_stack((b0,b1))                                            
Out[59]: 
array([[1, 3],
       [2, 4]])

Подробнее о комбинировании массивов в моем другом недавнем ответе: https://stackoverflow.com/a/56159553/901925

Все это, включая np.append, использует np.concatenate, просто сначала изменяя размеры различными способами. np.append часто используется не по назначению. Это не клон добавления в список. Ни один из них не должен использоваться повторно в цикле. Каждый раз они создают новый массив, что не очень эффективно.

0 голосов
/ 16 мая 2019

Если вы настаиваете на использовании массива numpy, это то, что я бы сделал.

new = []
for x, y in zip(b0, b1):
    new.append([x, y])

new = np.array(new)

Или составление списка

new = np.array([[x,y] for x, y in zip(b0, b1)])

Результат:

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