#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]