Снять квадратные скобки в Python - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть этот выходной сигнал:

[[[-0.015,  -0.1533,  1.    ]]

 [[-0.0069,  0.1421,  1.    ]]

...

 [[ 0.1318, -0.4406,  1.    ]]

 [[ 0.2059, -0.3854,  1.    ]]]

Но я хотел бы убрать оставшиеся квадратные скобки, которые будут выглядеть следующим образом:

[[-0.015  -0.1533  1.    ]

 [-0.0069  0.1421  1.    ]

 ...

 [ 0.1318 -0.4406  1.    ]

 [ 0.2059 -0.3854  1.    ]]

Мой код такой:

XY = []
for i in range(4000):
     Xy_1 = [round(random.uniform(-0.5, 0.5), 4), round(random.uniform(-0.5, 0.5), 4), 1]
     Xy_0 = [round(random.uniform(-0.5, 0.5), 4), round(random.uniform(-0.5, 0.5), 4), 0]
     Xy.append(random.choices(population=(Xy_0, Xy_1), weights=(0.15, 0.85)))

Xy = np.asarray(Xy)

Ответы [ 4 ]

5 голосов
/ 12 февраля 2020

Вы можете использовать numpy.squeeze для удаления 1 затемнения из массива

>>> np.squeeze(Xy)
array([[ 0.3609,  0.2378,  0.    ],
       [-0.2432, -0.2043,  1.    ],
       [ 0.3081, -0.2457,  1.    ],
       ...,
       [ 0.311 ,  0.03  ,  1.    ],
       [-0.0572, -0.317 ,  1.    ],
       [ 0.3026,  0.1829,  1.    ]])

Или изменить форму, используя numpy.reshape

>>> Xy.reshape(4000,3)
array([[ 0.3609,  0.2378,  0.    ],
       [-0.2432, -0.2043,  1.    ],
       [ 0.3081, -0.2457,  1.    ],
       ...,
       [ 0.311 ,  0.03  ,  1.    ],
       [-0.0572, -0.317 ,  1.    ],
       [ 0.3026,  0.1829,  1.    ]])
>>>
2 голосов
/ 12 февраля 2020

Вы можете попробовать удалить 1dim, используя sum.

a=[ [[-0.015,  -0.1533,  1.    ]],
    [[-0.0069,  0.1421,  1.    ]],
    ...
    [[ 0.1318, -0.4406,  1.    ]],
    [[ 0.2059, -0.3854,  1.    ]] ]

sum(a,[])
'''
[[-0.015,  -0.1533,  1.    ],
  [-0.0069,  0.1421,  1.    ],
  ...
  [ 0.1318, -0.4406,  1.    ],
  [ 0.2059, -0.3854,  1.    ]]
'''
1 голос
/ 12 февраля 2020

Вы можете использовать это random.choices(population=(Xy_0, Xy_1), weights=(0.15, 0.85))[0]

XY = []
for i in range(4000):
     Xy_1 = [round(random.uniform(-0.5, 0.5), 4), round(random.uniform(-0.5, 0.5), 4), 1]
     Xy_0 = [round(random.uniform(-0.5, 0.5), 4), round(random.uniform(-0.5, 0.5), 4), 0]
     # Pythonic way :-)
     Xy.append(random.choices(population=(Xy_0, Xy_1), weights=(0.15, 0.85))[0])

Xy = np.asarray(Xy)
print(Xy)

Выход

[[ 0.3948  0.0915  1.    ]
 [ 0.4197 -0.344   1.    ]
 [-0.4541  0.3192  1.    ]
 [ 0.3285  0.0453  1.    ]
 [-0.0171 -0.3088  1.    ]
 [ 0.2958 -0.2757  1.    ]
 [-0.1303  0.1581  0.    ]
 [-0.4146 -0.4454  1.    ]
 [ 0.0247  0.325   1.    ]
 [-0.227   0.139   1.    ]]
1 голос
/ 12 февраля 2020

Попробуйте продлить метод.

Xy.extend(random.choices(population=(Xy_0, Xy_1), weights=(0.15, 0.85)))
...