Numpy: вставлять новые элементы в массив, выполняя операции над столбцами (или строками) массива NxM - PullRequest
0 голосов
/ 27 февраля 2019

Это может быть глупый вопрос, но я только начал использовать numpy, и мне нужно выяснить, как выполнять некоторые простые операции.

Предположим, у меня есть массив 2x3

 array([{"a":1, "b":2, "c":3], 
         {"a":4, "b":5, "c":6}])

И что я хочу выполнить некоторые операции и вставить новые элементы (d и e) в мой массив,

d = a + b, e = b - c

array([{"a":1, "b":2, "c":3, "d":3, "e":-1],
 {"a":4, "b":5, "c":6, "d":9, "e":-1}])

Как я могу выполнить такую ​​операцию, используяnumpy библиотека без цикла foreach?

Спасибо заранее ...

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Ваш массив представляет собой массив dtype объекта 1d, 2 элемента, который содержит словари:

In [26]: arr = np.array([{"a":1, "b":2, "c":3}, {"a":4, "b":5, "c":6}])         
In [27]: arr                                                                    
Out[27]: array([{'a': 1, 'b': 2, 'c': 3}, {'a': 4, 'b': 5, 'c': 6}], dtype=object)

Список словарей, вероятно, имеет больше смысла:

In [28]: alist = [{"a":1, "b":2, "c":3}, {"a":4, "b":5, "c":6}]                 
In [29]: alist                                                                  
Out[29]: [{'a': 1, 'b': 2, 'c': 3}, {'a': 4, 'b': 5, 'c': 6}]

Действовать в этих словаряхвам просто придется их перебирать.Операции whole-array numpy работают в числах, а не в словарях или общих объектах Python.

0 голосов
/ 27 февраля 2019

Я бы порекомендовал вам использовать pandas.DataFrame для операций по столбцам.Если вам строго нужно использовать numpy, это, очевидно, не решит вашу проблему.Однако, глядя на строку кода, которую вы предоставили, библиотека pandas кажется правильным выбором.Вот пример проблемы, которую вы описали.

import pandas as pd

df = pd.DataFrame([{"a":1, "b":2, "c":3}, {"a":4, "b":5, "c":6}])
df["d"] = df["a"] + df["b"]
df["e"] = df["b"] - df["c"]
print(df)

Выход:

   a  b  c  d  e
0  1  2  3  3 -1
1  4  5  6  9 -1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...