Как разбить образцы нечетных чисел в массиве? - PullRequest
1 голос
/ 14 июля 2020

У меня есть массив значений длиной y (y = 7267). Я разделяю данные на основе x (x = 24), как показано ниже. Здесь я упустил некоторые значения, потому что 7267/24 дает 302, а не 302,8. Это потому, что я беру целые значения. Если я установлю int на float в 3-ей строке, я получаю сообщение об ошибке TypeError: 'float' object cannot be interpreted as an integer. Как я могу запустить следующий код без потери значений y? или, может быть, есть лучший способ разбить данные, например здесь ?

import numpy as np

y = np.random.rand(7267)
samples = len(y)
x = 24

trim = samples % x
subsequences = int(samples/x)
sequence_trimmed = y[:samples - trim]
sequence_trimmed.shape = (subsequences, time_steps, 1)

Ответы [ 4 ]

2 голосов
/ 14 июля 2020

Операция по модулю (%) определена только для целых чисел, поэтому вы не можете изменить ее на float. Массив также принимает только (целые, целые) формы. Если я вас правильно понимаю, и вы хотите иметь массив, имеющий форму (x, z) для некоторого z, который определенно будет принимать все ваши данные, как насчет введения некоторых нулей? Итак,

z=samples//x+1
array=np.zeros(x*z)
array[:samples]=y
np.reshape(array,(x,z))

может помочь?

2 голосов
/ 14 июля 2020

Используйте

subsequences = samples // x

// - целочисленное деление, поэтому оно вернет целочисленное выражение.

var // x + var % x = var / x
0 голосов
/ 14 июля 2020

Это?

import numpy as np

y = np.random.rand(7267)
samples = len(y)
x = 24

trim = samples % x
subsequences = samples//x
sequence_trimmed = y[:samples - trim]
sequence_trimmed.shape = (subsequences, x)
0 голосов
/ 14 июля 2020
In [28]: import numpy as np
    ...:
    ...: y = list(range(7267))
    ...: samples = len(y)
    ...: x = 24
    ...:
    ...: trim = round(samples / x)
    ...: subsequences = int(samples/x)
    ...: sequence_trimmed = y[:samples - trim]
    ...:
...