Объединение матрицы с массивом в Python

#python #arrays #numpy #matrix

#питон #массивы #numpy #матрица

Вопрос:

Я попытался перетасовать две матрицы. И перед перетасовкой я попытался объединить их, так как это выглядело проще. (Поскольку вы хотели примеры), например, первая матрица:

 A = [[ 1.  2.  3.   4]
     [ 1.  5.  6.   7]
     [ 1.  8.  9.   9]
     [ 1.  2.  1.   7]
     [ 1.  5.  5.   6]
     [ 1.  2.   3.  2]
     [ 1.  1.  4.   6]]
 

А второе — это:

 B = [ 1.  2.  3. 4. 5.  6.  7.]
 

Тогда как я могу их перетасовать?Перетасовывая, я хочу сделать что-то вроде этого: первый элемент A поменяется местами с первым элементом B. И на выходе будет:

 A = [[ 1.]
 [ 1.  5.  6.   7]
 [ 1.  8.  9.   9]
 [ 1.  2.  1.   7]
 [ 1.  5.  5.   6]
 [ 1.  2.   3.  2]
 [ 1.  1.  4.   6]]
B = [ 1.  2.  3.   4].  2.  3. 4. 5.  6.  7.]
 

Возможно ли это?
Надеюсь, теперь вопрос более понятен, спасибо за помощь.

Комментарии:

1. Как указано в сообщении об ошибке, матрицы должны иметь совпадающие размеры. Если вы включите свои входные данные в свой вопрос, это поможет.

2. Мы не знаем, что вы собираетесь производить. Приведите небольшой конкретный пример с 2 массивами и желаемым результатом.

Ответ №1:

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

Вы можете либо дополнить меньшую матрицу тем же типом данных (обычно плавающими или целыми числами), чтобы соответствовать размеру большей матрицы

 >>> result = np.full(fill_value=0, shape=b.shape)
>>> offset = (0, 0) # you can even set an offset
>>> result[offset[0]:a.shape[0] offset[0],offset[1]:a.shape[1] offset[1]] = a
 

или нарежьте большую матрицу, чтобы она соответствовала размеру меньшей матрицы.

 >>> b[:a.shape[0],:a.shape[1]]
 

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

Ответ №2:

Я понял это,

 c = np.column_stack((A, B))
np.random.shuffle(c)
BB = c[:, 4]
AA= c[:, 0:4]