Python 3.4中的Numpy 2D数组

特威

我有这个代码:

import pandas as pd
data = pd.read_csv("test.csv", sep=",")

数据数组如下所示:

在此处输入图片说明

问题是我无法按列将其拆分,如下所示:

week     = data[:,1]

它应将第二列拆分为一周,但不这样做:

* TypeError:无法散列的类型:'sl​​ice'*

我应该如何做才能使其正常工作?

我也想知道,这段代码到底能做什么?(不太了解np.newaxis部分)

week     = data['1'][:, np.newaxis]

结果: 在此处输入图片说明

这黑猫

这里有一些问题。

首先,read_csv默认情况下使用逗号作为分隔符,因此无需指定。

其次,csv默认情况下,熊猫阅读器使用第一行获取列标题。这似乎不是您想要的,因此您需要使用header=None参数。

第三,看起来您的第一列是行号。您可以使用index_col=0该列作为索引。

第四,对于大熊猫,第一个索引是列,而不是行。此外,使用标准data[ind]符号是按列名而不是列号建立索引。而且,您不能使用逗号同时索引行和列(您需要使用它data.loc[row, col]来做到)。

因此,对于您的情况,获取第二列所需要做的就是data[2],或者如果将第一列用作行号,则第二列将成为第一列,因此您可以这样做data[1]这将返回一个大熊猫Series1D相当于一个2D DataFrame

所以整个事情应该像这样:

import pandas as pd
data = pd.read_csv('test.csv', header=None, index_col=0)
week = data[1]

data 看起来像这样:

    1   2     3   4
0                    
1    10   2   100  12
2    15   5   150  15
3    25   7   240  20
4    22  12   350  20
5    51  13   552  20
6   134  20   880  36
7   150  22   900  38
8   200  29  1020  44
9   212  31  1100  46
10  199  23  1089  45
11  220  32  1145  60

“ 0”行不存在,仅出于提供信息的目的。

week 看起来像这样:

0
1      10
2      15
3      25
4      22
5      51
6     134
7     150
8     200
9     212
10    199
11    220
Name: 1, dtype: int64

但是,您可以在熊猫中给列(和行)赋予有意义的名称,然后通过这些名称访问它们。我不知道列名,所以我做了一些补充:

import pandas as pd
data = pd.read_csv('test.csv', header=None, index_col=0, names=['week', 'spam', 'eggs', 'grail'])
week = data['week']

在这种情况下,data如下所示:

    week  spam  eggs  grail
1     10     2   100     12
2     15     5   150     15
3     25     7   240     20
4     33    12   350     20
5     51    13   552     20
6    134    20   880     36
7    150    22   900     38
8    200    29  1020     44
9    212    31  1100     46
10   199    23  1089     45
11   220    32  1145     50

而且week是这样的:

1      10
2      15
3      25
4      33
5      51
6     134
7     150
8     200
9     212
10    199
11    220
Name: week, dtype: int64

对于np.newaxis,这样做是向数组添加一维。假设您有一个1D数组(向量),对其进行使用np.newaxis会将其转换为2D数组。它将把一个2D数组变成一个3D数组,3D变成4D,依此类推。根据放置位置的不同(例如[:,np.newaxis]vs.)[np.newaxis,:],可以确定要添加的尺寸。因此np.arange(10)[np.newaxis,:](或仅np.arange(10)[np.newaxis])可以提供形状(1,10) 2D数组,而np.arange(10)[:,np.newaxis]可以提供形状(10,1) 2D数组。

在您的情况下,该行正在执行的操作是获取名称11Dpandas的列Series,然后为其添加新的维度。但是,不是将其转换为DataFrame,而是将其转换为1Dnumpy数组,然后添加一个维度以使其成为2Dnumpy数组。

但是,这是长期危险的。无法保证这种静默转换不会在某个时候更改。要将pandas对象更改为numpy对象,应使用显式转换values方法,因此在您的情况下data.valuesdata['1'].values

但是,您实际上并不需要一个numpy数组。Aseries很好。如果你真的想要一个2D对象,你可以转换SeriesDataFrame使用类似data['1'].to_frame()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python:从 3d numpy 数组中的 2d 数组访问保存的点

来自分类Dev

在python 3中从csv文件创建2d数组

来自分类Dev

将2D数组复制到3D数组-Python / NumPy

来自分类Dev

迭代Python中3d数组中包含的2d数组

来自分类Dev

从python中的3D数组切片创建新的2D数组?

来自分类Dev

在Python中从现有2D数组创建3D数组

来自分类Dev

Python将2D numpy数组附加到3D

来自分类Dev

在python中添加2d数组以制作3d

来自分类Dev

在 Python 中将 3D 数组保存到一堆 2D 图像中

来自分类Dev

Python 2D NumPy数组理解

来自分类Dev

在Python 3中创建随机空白矩阵(2D数组)吗?

来自分类Dev

python3如何在2d数组中减去(旁边的)值?

来自分类Dev

反转2d数组中的某些元素以生成指定格式的矩阵Python 3

来自分类Dev

如何使用python从1d数组中创建具有3个元素的2d数组

来自分类Dev

Python / Numpy:将N4xN3xN2xN1 4D数组重新排列为(N4.N2)x(N3.N1)2D数组

来自分类Dev

Python枚举numpy中的2D数组

来自分类Dev

在python中对2d numpy数组进行下采样

来自分类Dev

Python:2D numpy数组中峰的正确位置?

来自分类Dev

使用numpy使用2D数组的值更改3D数组中的子数组

来自分类Dev

在3D数组中查找2D数组

来自分类Dev

Python中的2D数组操作

来自分类Dev

在python中填充2D数组

来自分类Dev

Python 中的动态数组 2D

来自分类Dev

根据值将标量映射到数组:2D到3D图像处理-NumPy / Python

来自分类Dev

从numpy中的3d数组中删除2d子数组

来自分类Dev

numpy.array 不会将我的列表列表转换为 Python3 中的 2d numpy 数组

来自分类Dev

从 3D numpy 数组中提取 2D

来自分类Dev

如何在3D Numpy数组中查找2D数组的行

来自分类Dev

用numpy中的3d数组索引2d数组

Related 相关文章

热门标签

归档