Применение простой функции к CSV и сохранение нескольких CSV-файлов

Я пытаюсь реплицировать данные, умножая каждое значение на диапазон значений и сохраняя результаты в формате CSV.

Я создал функцию «Replicate_Data», которая принимает входной массив numpy и умножает на случайное значение между диапазоном. Как лучше всего создать 100 файлов и сохранить их как P3D1, P4D1 и так далее.

def Replicate_Data(data: np.ndarray) -> np.ndarray:
    Rep_factor= random.uniform(-3,7)
    data1 = data * Rep_factor
    return data1

P2D1 = Replicate_Data(P1D1)
np.savetxt("P2D1.csv", P2D1, delimiter = "," , dtype = complex)

Вам и нам было бы полезно провести четкое различие между csv, файлом и структурой (массивом или списком), с которой вы начинаете. Мы не применяем функции к тексту в файле csv. Начните с маленькой ndarray и убедитесь, что функция возвращает правильный символ. Оставьте загрузку csv и сохраните на потом.

hpaulj 28.05.2019 19:53

В вашей функции вы назначаете data1, но не сохраняете и не собираете это между циклами. Затем вы возвращаете оригинал data. Также вы не используете переменную итерации x.

hpaulj 28.05.2019 19:56

Я до сих пор не вижу, что делает ваш цикл for, кроме пустой траты времени

hpaulj 29.05.2019 16:46

Спасибо @hpaulj Ввод в виде CSV-файла, содержащего 06 строк и 200 столбцов сложного типа. Данные считываются как P1D1 = genfromtxt('path', delimiter=',', dtype = 'complex') .

Rahmat Ullah Orakzai 29.05.2019 17:13

@hpaulj Да, ты прав. Я удалил цикл и получил тот же результат.

Rahmat Ullah Orakzai 29.05.2019 17:20
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
5
473
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот пример, который вы можете использовать в качестве справки.

Я генерирую игрушечные данные с именем toy, затем создаю n случайные значения, используя np.random.uniform, и вызываю их randos, затем я умножаю эти два объекта, чтобы сформировать out, используя трансляцию numpy. Вы также можете сделать это умножение в цикле (тот же самый, в котором вы сохраняете, на самом деле): в зависимости от размера вашего входного массива это может быть очень интенсивно, как я написал это. Более полный ответ, вероятно, зависит от формы ваших входных данных.

import numpy as np
toy = np.random.random(size=(2,2)) # a toy input array
n = 100 # number of random values
randos = np.random.uniform(-3,7,size=n) # generate 100 uniform randoms
# now multiply all elements in toy by the randoms in randos
out = toy[None,...]*randos[...,None,None] # this depends on the shape.
# this will work only if toy has two dimensions. Otherwise requires modification
# it will take a lot of memory... 100*toy.nbytes worth

# now save in the loop.. 
for i,o in enumerate(out):
    name = 'P{}D1'.format(str(i+1))
    np.savetxt(name,o,delimiter = ",")


# a second way without the broadcasting (slow, better on memory)
# more like 2*toy.nbytes
#for i,r in enumerate(randos):
#    name = 'P{}D1'.format(str(i+1))
#    np.savetxt(name,r*toy,delimiter = ",")

Спасибо @kevinkayaks. Входные данные в виде файла csv, содержащего 06 строк и 200 столбцов сложного типа. Данные читаются как P1D1 = genfromtxt('path', delimiter=',', dtype = 'complex'). Я пробовал этот пример, и он работал, однако он создает фигурные скобки "()" вокруг каждого значения в выходном csv.

Rahmat Ullah Orakzai 29.05.2019 16:57

вероятно, вам нужно очистить o, прежде чем сохранять его. Проверьте o.shape и посмотрите, есть ли у него лишняя пустая ось. Если это так, вы можете удалить его перед сохранением. Например, если o.shape возвращает (1,1,200') you would save o[:,0,:]` на каждой итерации цикла — лишняя ось уничтожается. Во всяком случае, только предположение. удачи

kevinkayaks 29.05.2019 21:20

Другие вопросы по теме