python - 如何将多维数组分割成两个数组?

标签 python numpy

我已经阅读了各种教程,但不知怎的,我无法在我的任务中实现这些教程。

我的目标是从文本文件中提取数据。然后根据数据绘制一些直方图。然而,我是 python 新手,并且一直坚持切片数组的基础知识。 文本文件中有一个原始数据集;每个项目都位于其自己的行中,并且每行都有多个属性。属性以逗号分隔。

我正在尝试将数据集分成两部分。每行的第一个属性(品种)放入一个数组中,每个项目的其余属性(给定品种的属性)放入第二个数组中。 原始数据采用 178 x 14 格式。

我使用以下代码成功提取了第一个数组:

readFile = open('wine.data', 'r')
cultivar = np.loadtxt(readFile, delimiter=',', usecols=[0], unpack=True)

但是当我尝试创建第二个数组时,我遇到了问题。

readFile = open('wine.data','r')
attributes = np.loadtxt(readFile, delimiter=',', usecols=[-13], unpack=True)

无论我尝试将什么内容放入 usecols-method 中,它要么是语法错误(如上面的代码所示),要么会得到一个扭曲的数组,如下所示:

[[ 1.00000000e+00 1.00000000e+00 1.00000000e+00 ..., 3.00000000e+00 3.00000000e+00 3.00000000e+00] [ 1.42300000e+01 1.32000000e+01 1.31600000e+01 ..., 1.32700000e+01 1.31700000e+01 1.41300000e+01] [ 1.71000000e+00 1.78000000e+00 2.36000000e+00 ..., 4.28000000e+00 2.59000000e+00 4.10000000e+00] ..., [ 1.04000000e+00 1.05000000e+00 1.03000000e+00 ..., 5.90000000e-01 6.00000000e-01 6.10000000e-01] [ 3.92000000e+00 3.40000000e+00 3.17000000e+00 ..., 1.56000000e+00 1.62000000e+00 1.60000000e+00] [ 1.06500000e+03 1.05000000e+03 1.18500000e+03 ..., 8.35000000e+02 8.40000000e+02 5.60000000e+02]]

整个Python代码在这里:

import numpy as np
import matplotlib.pyplot as plt
import urllib


readFile = open('wine.data', 'r')

first = np.loadtxt(readFile, delimiter=',', usecols=[0], unpack=True)
readFile = open('wine.data','r')
rest = np.loadtxt(readFile, delimiter=',', usecols=[-13], unpack=True)
readFile.close()

print rest

原始数据:http://pastebin.com/YqV1AZ3r

最佳答案

usecols 需要是一系列列索引。因此,要获取第 1-13 列,您可以这样做

readFile = open('wine.data', 'r')
rest = np.loadtxt(readFile, delimiter=',', usecols=range(1,14), unpack=True)

此外,无需读取文件两次。您可以读取文件一次并拆分(使用 numpy 的索引),如下所示

readFile = open('wine.data', 'r')
data = np.loadtxt(readFile, delimiter=',', unpack=True)
first = data[:,0]
rest = data[:,1:]

关于python - 如何将多维数组分割成两个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27293801/

相关文章:

python - 将函数视为 Python 中的对象

python - Pyinstaller:生成-exe文件+文件夹(在--onefile模式下)

python - 如何在图像比例变大时围绕其中心旋转图像(在 Pygame 中)

python - 如何对分配给一个变量的多个数组进行平均?

python - scipy sobel边缘检测,提取外部像素

python - 苹果操作系统 : Using python to capture screenshots of a specific window

python - Altair 中的多项选择

python - 音频频谱分析仪(15 个条中 4410 个值)

python - 结合numpy多维数组

python - Scipy LinearOperator dtype 未指定