Отображение значений строк в другие значения в том же массиве NumPy - PullRequest
0 голосов
/ 25 октября 2019

Если у меня есть пустой массив с такими объектами, как:

array(['Ana', 'Charlie', 'Andrew'], dtype=object)

И я хочу сопоставить каждый объект всем объектам в массиве, чтобы я получил следующий вывод:

array(['Ana', 'Ana'],['Ana','Charlie'],['Ana', 'Andrew'], 
['Charlie','ana'], ['Charlie','Charlie'],['Charlie','Andrew'], ['Andrew','ana'],['Andrew', 'Charlie'], ['Andrew','Andrew'], dtype=object).

как я могу использовать numpy для отображения каждого объекта на все объекты в одном массиве?

Большое спасибо.

Ответы [ 3 ]

1 голос
/ 25 октября 2019

Списки Python обычно больше подходят для работы со строками. Похоже, вы хотите декартово произведение:

from itertools import product
l = ['Ana', 'Charlie', 'Andrew']

list(map(list, product(l,l)))

[['Ana', 'Ana'],
 ['Ana', 'Charlie'],
 ['Ana', 'Andrew'],
 ['Charlie', 'Ana'],
 ['Charlie', 'Charlie'],
 ['Charlie', 'Andrew'],
 ['Andrew', 'Ana'],
 ['Andrew', 'Charlie'],
 ['Andrew', 'Andrew']]
1 голос
/ 25 октября 2019

Вы ищете декартово произведение двух массивов.

numpy.transpose() должно сработать:

x = array(['Ana', 'Charlie', 'Andrew'], dtype=object)
numpy.transpose([numpy.tile(x, len(x)), numpy.repeat(x, len(x))])
0 голосов
/ 25 октября 2019

Следующий код, использующий преимущества понимания списка, должен нормально работать.

import numpy as np
a=np.array(['Ana', 'Charlie', 'Andrew'], dtype=object)
b=np.array([[i,j] for i in a for j in a], dtype=object)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...