Python,在numpy数组中加载并列出.csv

Python,在numpy数组中加载并列出.csv,python,csv,numpy,scipy,Python,Csv,Numpy,Scipy,我正在加载带有以下代码的.csv文件: import csv import numpy as np import scipy.spatial points = np.array([((int(R), int(G), int(B)),float(X), float(Y), float(Z)) for R, G, B, X, Y, Z in csv.reader(open('XYZcolorlist_D65.csv'))]) # load R,G,B,X,Y,Z

我正在加载带有以下代码的.csv文件:

import csv
import numpy as np
import scipy.spatial

points = np.array([((int(R), int(G), int(B)),float(X), float(Y), float(Z))
              for R, G, B, X, Y, Z in csv.reader(open('XYZcolorlist_D65.csv'))])
    # load R,G,B,X,Y,Z coordinates of 'points' in a np.array  

print points 
这很好

但是,如果我再添加这一行,我将尝试使用
scipy
计算Delaunay三角剖分:

我收到以下错误消息:

Traceback (most recent call last):
  File "C:\Users\gary\Documents\EPSON STUDIES\delaunay.py", line 15, in <module>
    tri = scipy.spatial.Delaunay(points[1, 2, 3])
IndexError: too many indices

然后我需要跳过每行中的前3个值…

错误在于
numpy
数组的切片。要获取点的坐标,代码的任何版本都可以

代码的第一个版本,其中
点的第一列是RGB值的元组:

tri = scipy.spatial.Delaunay(points[:, 1:])
第二个版本,其中RGB值被展平,占据3列,您需要跳过三列:

tri = scipy.spatial.Delaunay(points[:, 3:])
事实上,您可以使用
np.loadtxt
读取数据(生成第二个版本):


我不确定你到底想做什么,但也许是这样的……你可以用你的csv阅读器替换文件_txt

>>> from scipy.spatial import Delaunay
>>> file_txt = [[255, 95, 127, 40.2, 26.5, 22.7], [255, 127, 127, 43.6, 32.3, 23.6], [255, 159, 127, 47.1, 39.1, 22.9], [0,0,0,0,0,0]]
>>> a = [list(map(float, row[3:])) for row in file_txt]
>>> a
[[40.2, 26.5, 22.7], [43.6, 32.3, 23.6], [47.1, 39.1, 22.9], [0.0, 0.0, 0.0]]
>>> Delaunay(a)
<scipy.spatial.qhull.Delaunay object at 0x0383FA30>
来自scipy.spatial import Delaunay的
>>
>>>文件_txt=[[255,95,127,40.2,26.5,22.7],[255,127,127,43.6,32.3,23.6],[255,159,127,47.1,39.1,22.9],[0,0,0,0,0]]
>>>a=[文件中的行的列表(映射(浮动,行[3:])]
>>>a
[[40.2, 26.5, 22.7], [43.6, 32.3, 23.6], [47.1, 39.1, 22.9], [0.0, 0.0, 0.0]]
>>>德洛奈(a)

介意发布前几行
点吗?需要三角剖分的点的尺寸是多少?
打印点[1:4]
返回前3行:
[(255,95,127)40.2074945517 26.5282949405 22.7094284437][(255,127,127)43.6647438365 32.3482625492 23.6181801523][(255,159,127)47.1225628354 39.17809448 22.9366615044]
,,我想得到里面的值,而不是整行。设置里面的值-你能举个例子吗?对于第一个点,您想要
[40.2,26.5,22.7]
?您真的想要
点中的所有点,但跳过表示颜色的第一列吗?编辑:我添加了另一种为reader中的行加载csv
映射(浮动,行)的方法,语法更简单。
tri = scipy.spatial.Delaunay(points[:, 3:])
points = np.loadtxt('XYZcolorlist_D65.csv')
>>> from scipy.spatial import Delaunay
>>> file_txt = [[255, 95, 127, 40.2, 26.5, 22.7], [255, 127, 127, 43.6, 32.3, 23.6], [255, 159, 127, 47.1, 39.1, 22.9], [0,0,0,0,0,0]]
>>> a = [list(map(float, row[3:])) for row in file_txt]
>>> a
[[40.2, 26.5, 22.7], [43.6, 32.3, 23.6], [47.1, 39.1, 22.9], [0.0, 0.0, 0.0]]
>>> Delaunay(a)
<scipy.spatial.qhull.Delaunay object at 0x0383FA30>