簡體   English   中英

如何將多維數組切成兩個數組?

[英]How to slice a multidimensional array into two arrays?

我已經閱讀了各種教程,但是以某種方式無法在任務中實現這些教程。

我的目標是從文本文件中提取數據。 然后再根據數據繪制一些直方圖。 但是,我是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方法,語法要么是錯誤的(如上面的代碼所示),否則我將得到一個扭曲的數組,如下所示:

[[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:]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM