Julia机器学习核心编程.6

一些常规语言都有的东西


提一嘴类型转换,指更改变量的类型,但是维持值不变的操作

数组是对象的可索引集合,例如整数、浮点数和布尔值,它们被存储在多维网格中。Julia中的数组可以包含任意类型的值。在Julia中本身就存在数组这个概念。

在大多数编程语言中,数组的下标都是从0开始的。但是在Julia中,数组的下标是从1开始的。这个特性我觉得在某些时候更符合直觉.日常说256级色域,你问ta,这么个数,大概率会说,1-256.but这个东西不对,应该是0-255,其实是一种反直觉的东西,至于设计背后的终极理念,如果我可以和语言的设计者聊天,可能会知道吧.MIT哦......我可以去吗?

代码使用rand函数创建了一个数组,该函数接收两个值,其中第一个值是范围,用“:”表示;第二个值是一个数。本例创建了一个具有6个元素的数组。

前面我们讨论的数组元素的类型是相同的。

创建具有不同类型元素的数组

如下代码创建了一个具有不同类型元素的数组,但是一些元素会自动提升它的类型。

在这段代码中,我们使用Float和Int数据来创建一个数组。在Julia中创建数组时会将Int类型转换为Float类型。一般来说,Julia会尝试使用promote()函数来提升类型。如果不能提升,数组将会变成Any类型。

代码在数组中输入了Int和字符串类型的元素,我们知道这两个元素是不能提升类型的,所以该数组为Any类型。

Julia中的列表解析式

通过列表推导创建数组更加容易,接下来我们就创建一个数组,并用2的幂来填充数组。

使用列表解析式创建

对不住了,我报错了

创建空白数组,用push!函数添加元素

append!吧一个数组放另一个数组里面

这还是报错,我一会儿看看文档去

是不是有MATLAB内味儿了!!!!!

转置一下

这个转置函数可能更好一点的选择

常见的操作

意料之中的报错,不知道的去看看线性代数

懂了吧,点到为止

这个把上面的报错也写进来了


.是一个特殊的运算符

多维数组的创建

取数

整形操作

DataFrame是具有标记列的数据结构,可以单独使用不同的数据类型。就像SQL表或电子表格一样,它有两个维度。DataFrame是统计分析推荐的数据结构。Julia提供了一个名为DataFrames的包,它具有使用DataFrames所需的所有功能。Julia的DataFrames包提供了三种数据类型。

· NA:Julia中的缺失值由特定数据类型NA表示。

· DataArray:标准Julia库中定义的数组类型。虽然它具有很多功能,但并未提供任何特定的数据分析功能。而DataFrames包中的DataArray类型提供了这些功能(例如,可以在数组中存储一些缺失值)。

· DataFrame:这是一个二维数据结构,其提供了很多功能来表示和分析数据。

DataFrames中的NA数据类型

在实际生活中,我们会遇到无值的数据。虽然Julia中的数组无法存储这种类型的值,但DataFrames包中提供了这种数据类型,即NA数据类型。假设有一个带有浮点数的数据集:

julia> x = [1.1, 2.2, 3.3, 4.4, 5.5, 6.6]

这将创建一个具有6个元素的数组{Float64,1}。

现在,假设此数据集在位置x[1]处有缺失值。这意味着该数据没有意义,而不是1.1。我们不能用Julia中的数组类型来表示。当尝试分配NA值时,将发生错误,我们无法将NA值添加到数组中。

01  julia> x[1] = NA

02  Error: UndefVarError: NA not defined

03  while loading In[2], in expression starting on line 1

如果要将数据加载到具有NA值的数组中,则需要使用DataArrays包下的DataArray类型。

DataArrays的使用

01  julia> using DataArrays

02  julia> x = DataArray([1.1, 2.2, 3.3, 4.4, 5.5, 6.6])

这将创建一个具有6个元素的数组DataArrays.DataArray{Float64,1}。下面的代码将使用NA值进行测试。

NA值测试

以下代码简单测试了NA的性质。

01  julia> x[1] = NA

02  NA

03  julia> x

04  6-element DataArrays.DataArray{Float64,1}:

05  NA

06  2.2

07  3.3

08  4.4

09  5.5

10  6.6

代码01行将NA赋值给x[1],因此使用DataArray可以处理丢失的数据。NA并不总是影响应用于特定数据集的函数。因此,不涉及NA值或不受其影响的方法可以应用于数据集;如果涉及NA值,那么DataArray将给出NA作为结果。在下面的代码中,我们使用了mean()函数和true||x。mean()函数不起作用,因为它涉及NA值;而true||x则按预期工作。

01  julia> true || x

02  true

03  julia> true && x[1]

04  NA

05  julia> mean(x)

06  NA

07  julia> mean(x[2:6])

08  4.4

可以看到,使用mean()函数时返回的值为NA。代码07行不涉及NA值,因此返回正常的数值。


(0)

相关推荐

  • 【C语言更新】指针函数

    文/Edward 今天开始,我们将来介绍C语言里面最让人头痛的两个东西,指针函数和指向函数的指针. 指针函数这个名字乍一看非常唬人,又是指针又是函数的,但是其实它并没有想象的那么复杂,千万别被它的名字 ...

  • 怎样计算两个区域中不同值的个数?

    点击上方 蓝色 文字  关注我们吧! 送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! 我们都会利用各种方法来找出连个区域中的不同值.可是有谁想过没有,有时候我们 ...

  • Julia机器学习核心编程.1

    其实这个地方是应该有一个juliahitory的目录的,可是没有 只能曲线救国,这样搜索的用了 Ctrl+R 在终端里面搜索用过的命令 shift+?进入帮助模式 分号进入shell模式 报错打脸了 ...

  • Julia机器学习核心编程.4

    在win上加e参数,执行这个代码.不可以.类unix可以试试,我有空操作 我超级喜欢这种循环写法 我这个传参写法没有错,不知道这么久没有出来 与其他编程语言一样,Julia可以更改存储在变量中的值或改 ...

  • Julia机器学习核心编程.3

    一般来说,解决问题的思路是先找出问题的来源,然后将问题分解成若干个小问题逐一解决.同时,还需要考虑所有情况,以保证该方法能完整地解决问题.而编程范式就是一种将编程活动分解的思想,虽然编程范式有很多种, ...

  • Julia机器学习核心编程.2(LLVM和JIT)

    LLVM本来是伊利诺伊大学的一个研究项目,其目的是创建基于静态单一任务(SSA)的现代的.类型安全的编译方法.它拥有底层操作,具有灵活性,并且具有可以清晰地表示所有高级语言的能力.它实际上是模块化.可 ...

  • Julia机器核心编程.5

    julia的浮点数 bits这个函数好像没有了,我xiang给你看下这个值 的二进制表示在最全面的符号位不同 指数形式的浮点数 代码01行使用f代替e来表示这是一个Float32类型的值.代码03行使 ...

  • Julia机器核心编程.函数

    函数是任何编程语言都不可缺少的一部分,因为函数对功能进行模块化封装,提高了程序的可读性和可重用性.Julia也不例外,它不仅提供了一些内置的库函数,同时也允许用户自定义函数. 在Julia中使用fun ...

  • Julia机器核心编程.7

    可以说,无论是R(data.frame)还是Python(Pandas)中的表格都是统计计算中最重要和最常用的数据类型.这是因为真实世界中的数据大多是表格式的,不能用简单的DataArray来表示. ...

  • Julia机器核心编程.高阶函数

    我这个起名好麻烦,都说函数完了.有整出来一个高阶函数,比较麻烦. 嵌套函数,简单来说,就是在函数中定义函数. 闭包是一个函数对象,它可以记住封闭范围中的值,即使它们不在内存中也是如此. 嵌套函数有助于 ...

  • Julia机器核心编程.作用域

    当我们在Julia中定义函数时,也可以在函数体内定义变量.在这种情况下,该变量在该函数的局部范围内有效,因此称为局部变量.而未在函数体内声明的变量在全局范围内有效,因此称为全局变量. 不同代码块中的变 ...