Numpy 就地修改数组?

2023-12-03

我有以下代码试图规范化 a 的值m x n数组(它将用作神经网络的输入,其中m是训练样本的数量,n是特征的数量)。

但是,当我在脚本运行后检查解释器中的数组时,我发现这些值没有标准化;也就是说,它们仍然具有原始的值。我想这是因为分配给array函数内部的变量只能在函数内部看到。

我怎样才能适当地进行这种标准化?或者我是否必须从规范化函数返回一个新数组?

import numpy

def normalize(array, imin = -1, imax = 1):
    """I = Imin + (Imax-Imin)*(D-Dmin)/(Dmax-Dmin)"""

    dmin = array.min()
    dmax = array.max()

    array = imin + (imax - imin)*(array - dmin)/(dmax - dmin)
    print array[0]


def main():

    array = numpy.loadtxt('test.csv', delimiter=',', skiprows=1)
    for column in array.T:
        normalize(column)

    return array

if __name__ == "__main__":
    a = main()

如果你想就地对 numpy 数组应用数学运算,你可以简单地使用标准的就地运算符+=, -=, /=等等。例如:

>>> def foo(a):
...     a += 10
... 
>>> a = numpy.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> foo(a)
>>> a
array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])

这些操作的就地版本启动速度要快一些,特别是对于较大的阵列:

>>> def normalize_inplace(array, imin=-1, imax=1):
...         dmin = array.min()
...         dmax = array.max()
...         array -= dmin
...         array *= imax - imin
...         array /= dmax - dmin
...         array += imin
...     
>>> def normalize_copy(array, imin=-1, imax=1):
...         dmin = array.min()
...         dmax = array.max()
...         return imin + (imax - imin) * (array - dmin) / (dmax - dmin)
... 
>>> a = numpy.arange(10000, dtype='f')
>>> %timeit normalize_inplace(a)
10000 loops, best of 3: 144 us per loop
>>> %timeit normalize_copy(a)
10000 loops, best of 3: 146 us per loop
>>> a = numpy.arange(1000000, dtype='f')
>>> %timeit normalize_inplace(a)
100 loops, best of 3: 12.8 ms per loop
>>> %timeit normalize_copy(a)
100 loops, best of 3: 16.4 ms per loop
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Numpy 就地修改数组? 的相关文章

随机推荐

  • 如何删除/切换元素上的悬停类(单击时翻译)而无需再次移动鼠标?

    如果您单击但不移动鼠标 您将看到按钮的颜色保持为红色 我想要完成的是在您单击并且不移动鼠标后它仍然会删除 切换 hover class jsFiddle 上的示例 function var Btn button Btn hover func
  • CosmosDB + 分组依据

    我需要使用 GROUP BY 条款Azure 数据资源管理器但我认为是不支持的 有人有解决或避免分组的想法吗 此致 最后 Azure Cosmos DB 目前支持GROUP BY在 NET SDK 3 3 或更高版本中 目前尚不支持其他语言
  • Twilio webhook 短信响应格式

    我在我的应用程序中使用 Twilio 并且我有 SMS Webhooks 其中我的 SMS 号码配置了 URL 一切正常 除了 Twilio 在每个请求的日志中向我发送错误 我认为我的应用程序的响应格式不正确 但我在文档中找不到如何使用 J
  • 扩展函数原型

    我希望能够扩展javascript中的函数原型 也就是说 向所有函数添加一个函数 目的是将其转换为一种格式 以便在另一种语言 即 ruby 它只能通过字符串进行通信 在这种特定设置中 之间进行交换 我已经有了一个系统 因此我可以通过定义一个
  • 在 iPhone SDK 中获取我所在位置的海拔高度(距海平面的高度)

    我正在尝试在我的应用程序中获取我所在位置的海拔高度 但每次我尝试altitude的财产CLLocation我得到的对象0 00结果 我用谷歌搜索我的查询 得到了类似的问题here and here 该链接表示 如果我通过 wifi 或手机信
  • 如何使用 JavaScript 打开带有打印对话框的文件

    我想使用 JavaScript 打开一个 Word 文档 并为该打开的文档窗口打开打印对话框 这是我的代码 window open http www tizaq com window print 它可以工作 但是打印对话框是为当前窗口打开的
  • 有什么方法可以使用 4 个点而不是 3 个点来绘制图像(透视扭曲)

    Graphics DrawImage 很好地支持绘制平行四边形 Bitmap destImage new Bitmap srcImage Width srcImage Height using Graphics gr new Graphic
  • Google App Engine app.yaml PHP 脚本参数

    在我的 GAE PHP app yaml 中 我尝试这样做 application myapp version 1 runtime php api version 1 threadsafe yes handlers url sitemap
  • 如何在 tkinter 中使无声异常变得更响亮?

    如果我从终端运行以下代码 我会在终端中收到一条有用的错误消息 import Tkinter as tk master tk Tk def callback raise UserWarning Exception b tk Button ma
  • bind_param() 仅对用户输入的值有用还是全部?

    我一直在阅读 SQL 注入 但找不到这个问题的答案 我明白如果我有这样的查询 prepare SELECT id foo bar FROM table WHERE username 那我应该使用bind param s username 以
  • 在哪里保存 Firefox 插件的文件?

    我正在开发一个 Firefox 插件 它可以生成网站的缩略图以供插件使用 到目前为止 我一直使用简单存储通过图像数据 URL 来存储它们 这样做有两个问题 存储空间有限 并且发送很长的字符串似乎不是最佳选择 我假设浏览器已经优化了加载图像文
  • Inno Setup ExtractTemporaryFile 导致向导冻结

    我制作了自定义页面来根据用户的选择来管理特定的 redist 工具安装 如果用户想要或不安装这些工具 这些工具会链接到用户选中的复选框 然后出现一个页面 向用户显示每个工具的安装进度 我在这里遇到的问题是进度页面仅在第一次时显示Extrac
  • 扫描仪只读取文件名,不读取其他内容

    我正在尝试实现一个基本的词法分析器 我现在陷入了文件解析的困境 public ArrayList
  • 从 NSData 转换的 NSString 中删除 unicode 和反斜杠转义

    我通过以下方式将响应数据从 Web 请求转换为 NSString NSData data self responseData if data return nil NSStringEncoding encoding CFStringConv
  • 检查 PHP cURL 服务器响应中的标头

    我一直在使用 PHP curl 从远程网站获取我需要的数据 这是我使用的 cURL 函数 function get content adr ch curl init curl setopt ch CURLOPT URL adr curl s
  • Android - 强制网络请求通过wifi而不是移动网络

    我有一个连接到硬件设备 Wi Fi 热点的应用程序 Android 似乎通过其他网络 例如 3G 4G 而不是热点转发请求 因为我的热点没有互联网连接 有什么办法可以强制网络流在 wifi 上工作吗 我遇到过以下函数 但它已被弃用 http
  • 仅适用于英国和 Woocommerce 3 中的特定产品的定制免费送货

    我一直在尝试为客户的促销产品创建免费送货选项 该产品将在全球范围内发货 但仅对来自英国的订单提供免费送货选项 因此 当有人从美国或香港订购时 将应用通常的费率 但不知何故 我无法将这些国家 地区排除在运输类别之外 我没有使用免费送货方法 因
  • Appcelerator Titan Android 推送通知 GCM 失败?

    我已经在 Appcelerator studio 的新项目中设置了 Android 和 IOS 的推送通知 IOS 工作正常 但 android 不行 我的问题是 android 设备令牌已成功获取并注册 但当我从 Appcelerator
  • 当用户将文本拖放到文本框中时,如何使用 JQuery 检测值更改事件?

    我正在使用这个 jQuery 代码 input bind change mouseup 检测用户是否将文本拖动到我的输入中并更改其值 但这似乎行不通 为什么它不起作用以及如何让它起作用 var inputField input var ol
  • Numpy 就地修改数组?

    我有以下代码试图规范化 a 的值m x n数组 它将用作神经网络的输入 其中m是训练样本的数量 n是特征的数量 但是 当我在脚本运行后检查解释器中的数组时 我发现这些值没有标准化 也就是说 它们仍然具有原始的值 我想这是因为分配给array