在Python中解析CSV文件
我有一个CSV文件,其中有以下几列:在Python中解析CSV文件,python,csv,Python,Csv,我有一个CSV文件,其中有以下几列: id,index,value,lenght 1,2 9 5,2 9 5,10 2,3 5 8,3 5 8,10 3,1,7,1 from __future__ import division from sympy import * import numpy as np import csv readVektor = csv.DictReader(open("data.csv")) for column in readVektor:
id,index,value,lenght
1,2 9 5,2 9 5,10
2,3 5 8,3 5 8,10
3,1,7,1
from __future__ import division
from sympy import *
import numpy as np
import csv
readVektor = csv.DictReader(open("data.csv"))
for column in readVektor:
print (column)
for column in readVektor:
id = int(column["id"])
index = int(column["index"])
value = int(column["value"])
length = int(column["lenght"])
#with open('data.csv', newline='') as readVektor: # Einlesen der Daten für Vektor 1
# data = csv.reader(readVektor, delimiter=';', quotechar='|')
# for row in data:
# print('; '.join(row))
#pprint(data)
class sparse(object): # Klasse, deren Objekte sparse Vektoren sind
def __init__(self, index, value, lenght, skalar): # Konstruktor
self.Index = index
self.Value = value
self.Laenge = lenght
self.Skalar = skalar
def maxNorm(self, value): # Berechnung der Maxmimums-Norm
maxNorm = max(value)
max_idx = value.index(maxNorm)
#return max_idx, maxNorm
print ("maxNorm: ", maxNorm)
def sMult(self, skalar, value): # Skalarmultiplikation
sMult = skalar * value
#return sMult
print ("sMult: ", sMult)
def Summe(self, index1, index2, value1, value2): # Berechnung der Summe
#for i, j in range(len(index1, index2)):
# if index1(i) < index2(i):
# self.summe(i) = value1(i)
# if index1(i) > index2(i):
# self.summe(i) = value2(i)
# if index1(i) == index2(i):
# self.summe(i) = value1(i) + value2(i)
# return summe
summe = value1 + value2
#return summe
print ("summe: ", summe)
def Differenz(self, index1, index2, value1, value2):
differenz = value1 - value2
#return differenz
print ("differenz: ", differenz)
def iProd(self, value1, value2):
iProd = np.dot (value1, value2)
#return iProd
print ("iProd: ", iProd)
#def Differenz(self, index1, index2, value1, value2): # Berechnung der Differenz
# for i in range(len(index1, index2))
# if index1(i) < index2(i)
# self.differenz(i) = value1(i)
# if index1(i) > index2(i)
# self.differenz(i) = value2(i)
# if index1(i) == index2(i)
# self.differenz(i) = value1(i) - value1(i)
#self.differenz = value1 - value2
#def Skalarprodukt(self, value1, value2): #Skalarprodukt
# for i in range(len(index1, index2))
# if index1(i) < index2(i)
# self.skalarprodukt(i) = 0
# if index1(i) > index2(i)
# self.skalarprodukt(i) = 0
# if index1(i) == index2(i)
# self.skalarprodukt(i) = value1(i) * value1(i)
#self.skalarprodukt = np.dot(value1, value2)
#print ("maxNorm: ", maxNorm)
#print ("summe: ", summe)
#print ("differenz: ", differenz)
#print ("sMult: ", sMult)
#print ("iProd: ", iProd)
sparsevector1 = sparse([2,9,5],[2,9,5],10,7)
sparsevector2 = sparse([3,5,8],[3,5,8],10,7)
sparsevector1.maxNorm([2,9,5])
sparsevector2.maxNorm([3,5,8])
sparsevector1.sMult(7,[2,9,5])
sparsevector2.sMult(7,[3,5,8])
sparsevector1.Summe([2,9,5],[3,5,8],[2,9,5],[3,5,8])
sparsevector2.Summe([2,9,5],[3,5,8],[2,9,5],[3,5,8])
#sparsevector1.Differenz([2,9,5],[3,5,8],[2,9,5],[3,5,8])
#sparsevector2.Differenz([2,9,5],[3,5,8],[2,9,5],[3,5,8])
sparsevector1.iProd([2,9,5],[3,5,8])
sparsevector2.iProd([2,9,5],[3,5,8])
for column in readVektor:
id = int(column["id"])
length = int(column["lenght"])
index = [int(x) for x in column["index"].split(' ')]
value = [int(x) for x in column["value"].split(' ')]
这是关于稀疏向量、向量的id和长度、向量的值以及向量的索引的信息
我想解析以下信息:id1、ID2、ID3、index1、index2、index3、value1、value2、value3、lenght1、lenght2、lenght3
我想用这些信息来执行一些操作,比如稀疏向量的加法和乘法
到目前为止,我的代码如下所示:
id,index,value,lenght
1,2 9 5,2 9 5,10
2,3 5 8,3 5 8,10
3,1,7,1
from __future__ import division
from sympy import *
import numpy as np
import csv
readVektor = csv.DictReader(open("data.csv"))
for column in readVektor:
print (column)
for column in readVektor:
id = int(column["id"])
index = int(column["index"])
value = int(column["value"])
length = int(column["lenght"])
#with open('data.csv', newline='') as readVektor: # Einlesen der Daten für Vektor 1
# data = csv.reader(readVektor, delimiter=';', quotechar='|')
# for row in data:
# print('; '.join(row))
#pprint(data)
class sparse(object): # Klasse, deren Objekte sparse Vektoren sind
def __init__(self, index, value, lenght, skalar): # Konstruktor
self.Index = index
self.Value = value
self.Laenge = lenght
self.Skalar = skalar
def maxNorm(self, value): # Berechnung der Maxmimums-Norm
maxNorm = max(value)
max_idx = value.index(maxNorm)
#return max_idx, maxNorm
print ("maxNorm: ", maxNorm)
def sMult(self, skalar, value): # Skalarmultiplikation
sMult = skalar * value
#return sMult
print ("sMult: ", sMult)
def Summe(self, index1, index2, value1, value2): # Berechnung der Summe
#for i, j in range(len(index1, index2)):
# if index1(i) < index2(i):
# self.summe(i) = value1(i)
# if index1(i) > index2(i):
# self.summe(i) = value2(i)
# if index1(i) == index2(i):
# self.summe(i) = value1(i) + value2(i)
# return summe
summe = value1 + value2
#return summe
print ("summe: ", summe)
def Differenz(self, index1, index2, value1, value2):
differenz = value1 - value2
#return differenz
print ("differenz: ", differenz)
def iProd(self, value1, value2):
iProd = np.dot (value1, value2)
#return iProd
print ("iProd: ", iProd)
#def Differenz(self, index1, index2, value1, value2): # Berechnung der Differenz
# for i in range(len(index1, index2))
# if index1(i) < index2(i)
# self.differenz(i) = value1(i)
# if index1(i) > index2(i)
# self.differenz(i) = value2(i)
# if index1(i) == index2(i)
# self.differenz(i) = value1(i) - value1(i)
#self.differenz = value1 - value2
#def Skalarprodukt(self, value1, value2): #Skalarprodukt
# for i in range(len(index1, index2))
# if index1(i) < index2(i)
# self.skalarprodukt(i) = 0
# if index1(i) > index2(i)
# self.skalarprodukt(i) = 0
# if index1(i) == index2(i)
# self.skalarprodukt(i) = value1(i) * value1(i)
#self.skalarprodukt = np.dot(value1, value2)
#print ("maxNorm: ", maxNorm)
#print ("summe: ", summe)
#print ("differenz: ", differenz)
#print ("sMult: ", sMult)
#print ("iProd: ", iProd)
sparsevector1 = sparse([2,9,5],[2,9,5],10,7)
sparsevector2 = sparse([3,5,8],[3,5,8],10,7)
sparsevector1.maxNorm([2,9,5])
sparsevector2.maxNorm([3,5,8])
sparsevector1.sMult(7,[2,9,5])
sparsevector2.sMult(7,[3,5,8])
sparsevector1.Summe([2,9,5],[3,5,8],[2,9,5],[3,5,8])
sparsevector2.Summe([2,9,5],[3,5,8],[2,9,5],[3,5,8])
#sparsevector1.Differenz([2,9,5],[3,5,8],[2,9,5],[3,5,8])
#sparsevector2.Differenz([2,9,5],[3,5,8],[2,9,5],[3,5,8])
sparsevector1.iProd([2,9,5],[3,5,8])
sparsevector2.iProd([2,9,5],[3,5,8])
for column in readVektor:
id = int(column["id"])
length = int(column["lenght"])
index = [int(x) for x in column["index"].split(' ')]
value = [int(x) for x in column["value"].split(' ')]
来自未来进口部的
从sympy进口*
将numpy作为np导入
导入csv
readVektor=csv.DictReader(打开(“data.csv”))
对于readVektor中的列:
打印(列)
对于readVektor中的列:
id=int(列[“id”])
索引=int(列[“索引”])
value=int(列[“value”])
长度=整数(列[“长度”])
#使用open('data.csv',换行符='')作为readVektor:#Einlesen der Daten für Vektor 1
#data=csv.reader(readVektor,分隔符=“;”,引号=“|”)
#对于数据中的行:
#打印(“;”。连接(行))
#pprint(数据)
类稀疏(对象):#Klasse,deren Objekte稀疏Vektoren sind
定义初始值(自身、索引、值、长度、斯卡拉):#Konstruktor
self.Index=索引
自我价值=价值
self.Laenge=长度
self.Skalar=Skalar
定义最大范数(自身,值):#最大范数
maxNorm=max(值)
max_idx=值索引(maxNorm)
#返回max_idx,maxNorm
打印(“maxNorm:,maxNorm”)
def sMult(self、skalar、value):#Skalarmultiplikation
sMult=skalar*值
#返回污迹
打印(“弄脏:”,弄脏)
def总和(自身、index1、index2、值1、值2):#用于总和
#对于范围内的i,j(len(index1,index2)):
#如果index1(i)index2(i):
#自我总和(i)=值2(i)
#如果index1(i)=index2(i):
#自我总和(i)=值1(i)+值2(i)
#返回总和
总和=值1+值2
#返回总和
打印(“总和:,总和”)
def差异Z(自身、index1、index2、值1、值2):
差分Z=值1-值2
#返回差
打印(“differenz:,differenz”)
def iProd(自身、值1、值2):
iProd=np.dot(值1,值2)
#回油管
打印(“iProd:,iProd”)
#定义差异(自、索引1、索引2、值1、值2):#在差异下进行设置
#对于范围内的i(len(index1,index2))
#如果index1(i)index2(i)
#自差z(i)=值2(i)
#如果index1(i)=index2(i)
#自差(i)=值1(i)-值1(i)
#self.differencez=值1-值2
#def Skalarprodukt(自身、值1、值2):#Skalarprodukt
#对于范围内的i(len(index1,index2))
#如果index1(i)index2(i)
#self.skalarprodukt(i)=0
#如果index1(i)=index2(i)
#self.skalarprodukt(i)=值1(i)*值1(i)
#self.skalarprodukt=np.dot(值1,值2)
#打印(“maxNorm:,maxNorm”)
#打印(“总和:,总和”)
#打印(“differenz:,differenz”)
#打印(“弄脏:”,弄脏)
#打印(“iProd:,iProd”)
sparsevector1=稀疏([2,9,5],[2,9,5],10,7)
sparsevector2=稀疏([3,5,8],[3,5,8],10,7)
SparSevector 1.最大范数([2,9,5])
SparSevector 2.最大范数([3,5,8])
斯帕塞维克特1.斯马特(7,[2,9,5])
斯帕塞维克特2.斯马特(7,[3,5,8])
sparsevector1.Summe([2,9,5],[3,5,8],[2,9,5],[3,5,8])
sparsevector2.Summe([2,9,5],[3,5,8],[2,9,5],[3,5,8])
#sparsevector1.微分([2,9,5],[3,5,8],[2,9,5],[3,5,8])
#sparsevector2.微分([2,9,5],[3,5,8],[2,9,5],[3,5,8])
sparsevector1.iProd([2,9,5],[3,5,8])
sparsevector2.iProd([2,9,5],[3,5,8])
我如何解析必要的信息并将其传递给函数?看起来您的稀疏类将数组作为输入…也许可以尝试以下方法:
id,index,value,lenght
1,2 9 5,2 9 5,10
2,3 5 8,3 5 8,10
3,1,7,1
from __future__ import division
from sympy import *
import numpy as np
import csv
readVektor = csv.DictReader(open("data.csv"))
for column in readVektor:
print (column)
for column in readVektor:
id = int(column["id"])
index = int(column["index"])
value = int(column["value"])
length = int(column["lenght"])
#with open('data.csv', newline='') as readVektor: # Einlesen der Daten für Vektor 1
# data = csv.reader(readVektor, delimiter=';', quotechar='|')
# for row in data:
# print('; '.join(row))
#pprint(data)
class sparse(object): # Klasse, deren Objekte sparse Vektoren sind
def __init__(self, index, value, lenght, skalar): # Konstruktor
self.Index = index
self.Value = value
self.Laenge = lenght
self.Skalar = skalar
def maxNorm(self, value): # Berechnung der Maxmimums-Norm
maxNorm = max(value)
max_idx = value.index(maxNorm)
#return max_idx, maxNorm
print ("maxNorm: ", maxNorm)
def sMult(self, skalar, value): # Skalarmultiplikation
sMult = skalar * value
#return sMult
print ("sMult: ", sMult)
def Summe(self, index1, index2, value1, value2): # Berechnung der Summe
#for i, j in range(len(index1, index2)):
# if index1(i) < index2(i):
# self.summe(i) = value1(i)
# if index1(i) > index2(i):
# self.summe(i) = value2(i)
# if index1(i) == index2(i):
# self.summe(i) = value1(i) + value2(i)
# return summe
summe = value1 + value2
#return summe
print ("summe: ", summe)
def Differenz(self, index1, index2, value1, value2):
differenz = value1 - value2
#return differenz
print ("differenz: ", differenz)
def iProd(self, value1, value2):
iProd = np.dot (value1, value2)
#return iProd
print ("iProd: ", iProd)
#def Differenz(self, index1, index2, value1, value2): # Berechnung der Differenz
# for i in range(len(index1, index2))
# if index1(i) < index2(i)
# self.differenz(i) = value1(i)
# if index1(i) > index2(i)
# self.differenz(i) = value2(i)
# if index1(i) == index2(i)
# self.differenz(i) = value1(i) - value1(i)
#self.differenz = value1 - value2
#def Skalarprodukt(self, value1, value2): #Skalarprodukt
# for i in range(len(index1, index2))
# if index1(i) < index2(i)
# self.skalarprodukt(i) = 0
# if index1(i) > index2(i)
# self.skalarprodukt(i) = 0
# if index1(i) == index2(i)
# self.skalarprodukt(i) = value1(i) * value1(i)
#self.skalarprodukt = np.dot(value1, value2)
#print ("maxNorm: ", maxNorm)
#print ("summe: ", summe)
#print ("differenz: ", differenz)
#print ("sMult: ", sMult)
#print ("iProd: ", iProd)
sparsevector1 = sparse([2,9,5],[2,9,5],10,7)
sparsevector2 = sparse([3,5,8],[3,5,8],10,7)
sparsevector1.maxNorm([2,9,5])
sparsevector2.maxNorm([3,5,8])
sparsevector1.sMult(7,[2,9,5])
sparsevector2.sMult(7,[3,5,8])
sparsevector1.Summe([2,9,5],[3,5,8],[2,9,5],[3,5,8])
sparsevector2.Summe([2,9,5],[3,5,8],[2,9,5],[3,5,8])
#sparsevector1.Differenz([2,9,5],[3,5,8],[2,9,5],[3,5,8])
#sparsevector2.Differenz([2,9,5],[3,5,8],[2,9,5],[3,5,8])
sparsevector1.iProd([2,9,5],[3,5,8])
sparsevector2.iProd([2,9,5],[3,5,8])
for column in readVektor:
id = int(column["id"])
length = int(column["lenght"])
index = [int(x) for x in column["index"].split(' ')]
value = [int(x) for x in column["value"].split(' ')]
然后,索引和值都将是整数列表。您的标题与解析CSV相关,但快速扫描代码表明CSV解析已经起作用。你的代码也很长-请阅读另一个问题:我必须使用魔法方法加减两个向量。我使用以下两个函数:def uuu add uuuu(self,other):我还需要做什么才能使这些函数工作?定义(自身、其他):