Numpy.array (500x50), Как объединить строки, чтобы он стал (500x1) - PullRequest
0 голосов
/ 19 октября 2018

Кажется, что это довольно простая проблема для опытного пользователя Python

Изо всех сил пытаюсь манипулировать моим numpy.array, в настоящее время это массив 10x битных чисел размером 500x50, я хотел бы объединить все числа вместепо строкам, чтобы создать массив 500x1

Любые советы Спасибо

Код

Weight_Binary = np.array(Weight_int)
Weight_Binary=(np.array([np.binary_repr(a).zfill(10) 
     for b in Weight_Binary for a in b]).reshape(Weight_Binary.shape))

print(Weight_Binary.shape)
print(Weight_Binary)


(500, 50)
[['0110100010' '1011010010' '0000000000' ... '0100100101' '0100100000'
'0010000010']
['0000010011' '1010101000' '0011010100' ... '1000111110' '0000000010'
'1001101011']
['0101001000' '1000010000' '1101110111' ... '1011001001' '1000110000'
'0000001100']

Я ищусоедините эти числа между строками, чтобы получить массив 500x1.Или создать новый столбец в конце, который является результатом объединения этих чисел вместе, в котором я могу затем использовать.

Например, единственным примером будет

 Weight_Binary[0,0]+Weight_Binary[0,1]

 Output '01101000101011010010'

Но длявесь массив

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Вы можете использовать объединение вдоль столбцов для объединения двоичных представлений:

import numpy as np

np.random.seed(42)
weight_binary = np.random.randint(1000, size=(500, 50))
weight_binary = (np.array([np.binary_repr(a).zfill(10) for b in weight_binary for a in b]).reshape(weight_binary.shape))

result = np.array([''.join(column) for column in weight_binary])
print(result.shape)
print(result[0])

Вывод

(500,)
00011001100110110011110101110001000011100001101010000100011110101111000000010100100110011000011110010111010010001101011001010010100111001010000101011101011101000001100011110110011110100101110010000010101001010101001101001100000001010101011101111010110110011101110010010101100000010010111111111011101101000101000010100000011100101101001110010000010101001111110010111010111101011000100011000001110110100000111010011111111010101010010111011011101011101111110011111100001110001011110111101111011010101110
0 голосов
/ 19 октября 2018

Кажется, что вы хотите объединить их по любой оси, используя np.concatenate :

import numpy as np

shape_source = (4, 3)
shape_target = (4, 1)

np.random.seed(42)
array = np.random.randint(9, size=shape_source)

print(array)
# [[6 3 7]
#  [4 6 2]
#  [6 7 4]
#  [3 7 7]]

print(np.concatenate(array[:], axis=0))
# [6 3 7 4 6 2 6 7 4 3 7 7]

print(np.concatenate(np.matrix.transpose(array)[:], axis=0))
# [6 4 6 3 3 6 7 7 7 2 4 7]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...