python - 操作 numpy 数组

标签 python numpy genfromtxt

我目前有一个大约有 350 行和 50 列的 csv 文件,我想访问其中的四列。使用genfromtxt ,我能做到这一点。但是,一旦有了这些列,我想根据现有列添加一个新列(即 newcol=abs(col1-col2) )。然而,当我这样做时,我收到错误: too many indices for array .

这是我的代码:

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 返回元组的一维数组或更具体的结构化 ndarray。读这个numpy.genfromtxt produces array of what looks like tuples, not a 2D array—why? 因此,您可以修复参数或将这些元组转换为数组,以获取 2D 数组形式的数据。 当您使用 name 参数时,它会返回一个结构化的 ndarray,删除此参数,它将返回一个 2D 数组。 正如您在此处命名的列,您可以这样做

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

另外thedata[0,0]这会返回错误,因为没有二维数组尝试执行thedata[0][0]

关于python - 操作 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37570790/

相关文章:

python - 将一个数据帧的所有重复列值添加到 pandas 中的其他数据帧

jquery - django ajax 请求

python - 掩码 n 维 numpy 数组(以节省内存)

python - 为什么 numpy.corrcoef() 返回 nan?

python - 矩阵转换为txt文件

python - 从 CSV 合并 numpy ndarray

python - Numpy.genfromtxt 删除 dtype.names 中的方括号

python - Django 如何知道在 urls.py 中使用什么 'pk' ?

python 通过 os.system 传递变量

python - 给定 x,y 平面中的 MxN 网格,计算 f(x,y) 并将其存储到矩阵中(python)