规范化/标准化 numpy 重新排列

2024-03-23

我想知道规范化/标准化 numpy 的最佳方法是什么recarray是。 为了清楚起见,我不是在谈论数学矩阵,而是在谈论一个记录数组,其中还包含例如文本列(例如标签)。

a = np.genfromtxt("iris.csv", delimiter=",", dtype=None)
print a.shape
> (150,)

正如你所看到的,我不能过程a[:,:-1]因为形状是一维的。

我发现最好的方法是迭代所有列:

for nam in a.dtype.names[:-1]:
    col = a[nam]
    a[nam] = (col - col.min()) / (col.max() - col.min())

还有更优雅的方法吗?是否有某种方法,例如“标准化”或“标准化”?


有很多方法可以做到这一点,但有些方法比其他方法更干净。

通常,在 numpy 中,您将字符串数据保存在单独的数组中。

(事情比 R 的数据框架要低一些。通常只需将事情包装在一个类中以进行关联,但将不同的数据类型分开。)

老实说,numpy 并未针对处理此类“灵活”数据类型进行优化(尽管它肯定可以做到)。像pandas http://pandas.pydata.org/index.html为“类似电子表格”的数据提供更好的界面(pandas 只是 numpy 之上的一层)。

但是,结构化数组(这就是您此处所拥有的)将允许您在传递字段名称列表时按列对它们进行切片。 (例如。data[['col1', 'col2', 'col3']])

无论如何,一种方法是执行以下操作:

import numpy as np

data = np.recfromcsv('iris.csv')

# In this case, it's just all but the last, but we could be more general
# This must be a list and not a tuple, though.
float_fields = list(data.dtype.names[:-1])

float_dat = data[float_fields]

# Now we just need to view it as a "regular" 2D array...
float_dat = float_dat.view(np.float).reshape((data.size, -1))

# And we can normalize columns as usual.
normalized = (float_dat - float_dat.min(axis=0)) / float_dat.ptp(axis=0)

然而,这远非理想。如果您想就地执行操作(就像您目前的情况一样),最简单的解决方案就是您已经拥有的:只需迭代字段名称即可。

顺便说一下,使用pandas,你会做这样的事情:

import pandas
data = pandas.read_csv('iris.csv', header=None)

float_dat = data[data.columns[:-1]]
dmin, dmax = float_dat.min(axis=0), float_dat.max(axis=0)

data[data.columns[:-1]] = (float_dat - dmin) / (dmax - dmin)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

规范化/标准化 numpy 重新排列 的相关文章

随机推荐

  • 具有扩展选择参数的 Jenkins 声明式管道

    我尝试使用 Jenkins 实现我的第一个声明式管道 以便能够将作业的参数定义也放在 SCM 下 我想转移具有扩展选择参数的现有作业 不幸的是 我无法将其添加到脚本的parameters 部分 在插件页面上 https wiki jenki
  • 在 HTTP 响应标头中使用内容处置

    我发现以下 asp net 代码在从数据库提供文件时非常有用 Response AppendHeader content disposition attachment filename fileName 这允许用户将文件保存到他们的计算机
  • Android 通过 ID 获取联系人组

    我有联系人 ID 如何获取联系人所属的组 我确信这与 Contacts Groups 类有关 但我无法弄清楚 In GroupMembership PERSON ID你有这个人的 ID 并且在同一张表中GroupMembership GRO
  • 如何在 .ascx 页面中使用 javascript

    如何在 ascx 页面中使用 javascript 您可以将脚本标签添加到标记中 Or use 脚本管理器 http msdn microsoft com en us library system web ui scriptmanager
  • 如何在链接期间替换pthread_create

    我想维护所有正在运行的线程的列表 以及有关每个线程的一些附加信息 在这个answer https stackoverflow com a 3476240 4676150提到可以提供我自己的 pthread create 版本并将程序与其链接
  • 将迷你图添加到表中

    我试图将所有数据处理转移到 Rmarkdown 而不是 SPSS Excel 但不知道如何创建带有附加图表的表格 在 Excel 中 这可以通过 Sparklines 功能来完成 或者像我一样 只需创建一个图表并非常准确地放置它 上表是使用
  • 如何使用 JS/nightwatchjs 并行运行多个测试?

    我可以通过 Nightwatch 并行执行多个测试用例吗 可能吗 我正在寻找 java 中线程能力的能力以并行测试用例执行 另外 你们对于从 Selenium 迁移到 Nightwatch 有何看法 您可以看到并行性的线程 守夜人 http
  • Spring 3 bean实例化顺序

    是否有指定 bean 实例化的顺序 即我希望特定的 bean 在其他 bean 之前实例化 就像启动顺序一样 我正在使用 Spring 3 2 和基于注释的声明方法 If bean A取决于豆子B通过定义
  • 在 R 的数据框中查找相似的行(不重复)

    我有一个超过 800k 行的数据集 示例 id fieldA fieldB codeA codeB 120 Similar one addrs example1 929292 0006 3490 Similar oh addrs examp
  • EF Core 在每次迁移时更新种子数据而不进行更改

    所以我看到我的数据库有这样的用户和角色 public static void SeedUsers this ModelBuilder modelBuilder var roles new new Role Id new Guid 51275
  • IQueryable C# 选择

    这是我的代码 但我需要仅选择要在我的 Datagridview 中显示的列 我需要代码来仅选择某些列 示例 Select t gt t usu Login t gt t usu Login public List
  • github http 克隆返回“您在服务器上运行 git update-server-info 了吗”

    我正在尝试在 Windows 上克隆一个 github 项目 我在防火墙后面 所以无法使用 ssh 跑步 git clone https github com user project git 正在返回https github com us
  • Pandas 数据框将唯一值转换为列名

    我有以下格式的 pandas 数据框 input df gw mac mac val status 0 AC233FC01403 AC233F264A4C 21 Outwards 1 AC233FC015F6 AC233F264A4C 37
  • AngularJs 路由链接中没有主题标签?

    我最近开始学习 AngularJs 进行 Web 开发 到目前为止我很喜欢它 但是 我不太确定在视图之间路由时是否在链接中包含主题标签 我主要关心的是 Google 如何缓存网站上的页面以及链接是否双向工作 即用户是否可以直接单击 www
  • 使用 google test 将类型名和字符串传递给参数化测试

    有没有一种方法可以使用谷歌的测试将类型和字符串传递给参数化测试 我想要做 template
  • mongoskin 只能在 mongodb 1.4 及更早版本上运行吗?

    我正在尝试了解nodejs express 和 mongodb 我正在运行 mongodb v 2 0 6 和最新的 Nodejs 和 Express 并尝试通过 mongoskin 将 Express 应用程序与 mongodb 连接 问
  • caffe全卷积cnn - 如何使用裁剪参数

    我正在尝试为我的问题训练一个完全卷积网络 我正在使用实施https github com shelhamer fcn berkeleyvision org https github com shelhamer fcn berkeleyvis
  • 重复并连接字符串 N 次

    在 Ruby 中 我可以使用以下命令重复字符串 n 次 E G my string 2 gt my stringmy string 在 R 中是否有同样简单的方法来做到这一点 您可以使用replicate or rep replicate
  • 是否有 Ruby 方法来确定同一类的两个实例的所有实例变量是否相等?

    是否有一种 Ruby 方法可以根据两个对象的所有实例变量是否相等来比较它们 该方法的行为类似于此代码 class Coordinates attr reader x y def initialize x y x x y y end end
  • 规范化/标准化 numpy 重新排列

    我想知道规范化 标准化 numpy 的最佳方法是什么recarray是 为了清楚起见 我不是在谈论数学矩阵 而是在谈论一个记录数组 其中还包含例如文本列 例如标签 a np genfromtxt iris csv delimiter dty