Python 操纵numpy数组

Python 操纵numpy数组,python,numpy,genfromtxt,Python,Numpy,Genfromtxt,我目前有一个csv文件,大约有350行和50列,其中我想访问四列。使用genfromtxt,我能够做到这一点。但是,一旦我有了这些列,我想在现有列的基础上添加一个新列(即newcol=abs(col1-col2))。然而,当我这样做时,我得到了一个错误:数组的索引太多了 这是我的密码: import numpy as np thedata = np.genfromtxt( 'match_roughgraphs.csv', skip_header=0, skip_foote

我目前有一个csv文件,大约有350行和50列,其中我想访问四列。使用
genfromtxt
,我能够做到这一点。但是,一旦我有了这些列,我想在现有列的基础上添加一个新列(即
newcol=abs(col1-col2)
)。然而,当我这样做时,我得到了一个错误:
数组的索引太多了

这是我的密码:

import numpy as np
thedata = np.genfromtxt(
    'match_roughgraphs.csv',
    skip_header=0,
    skip_footer=0,
    delimiter=',',
    usecols=(3,4,29,30),
    names=['hubblera','hubbledec','sloanra','sloandec'])

for row in thedata:
    print(row)

b=np.empty(350,1)
b=np.absolute(thedata[:,0]-thedata[:,1]) #returns too many indices error

print(thedata[0,0]) #also returns too many indices error

print(thedata[0]) #prints out first row

基于上面的最后两行,我尝试了一个测试,我假设
genfromtxt()
正在加载csv文件,以便所有数据都保存在一列中,由字符串逗号而不是分隔符逗号分隔。关于如何解决这个问题,有什么建议吗?

我认为您的代码不起作用的原因是numpy.genfromtxt返回一个元组数组或更具体的结构化数据数组。读这个 因此,您可以修复参数或将这些元组转换为数组,以将
数据
作为二维数组。 当您使用name参数时,它将返回一个结构化的数组,删除此参数,它将返回一个二维数组。 正如您在这里命名的列一样,您可以这样做

b=np.absolute(thedata['hubblera']-thedata['hubbledec'])

另外
数据[0,0]
这会返回一个错误,因为没有2D数组尝试执行
数据[0][0]

我看到了,但答案是,问题是为了成为2D数组,N数组必须是同质的。然而,我的已经是同质的了。所有数据点都是“当您使用name参数时,它返回一个结构化的数据数组,尝试删除names参数它将返回一个2d arrayplz,如果它满足您的查询,则接受答案。”。