Julia初学备忘

println("hello!")
println("hello!")
print("hello!")
print("hello!")
hello!
hello!
hello!hello!

两个函数换行区别。

using Pkg

abstract type Real <: Number end

Real 是Number的子类

(1+2)::Int

:: 类型声明符号,如同Python3中:,如 def uniquePaths(self, m: int, n: int) -> int:

:: 运算符可以用来在程序中给表达式和变量附加类型注释。

例子,让参数为指定类型,

#指定参数 M 为Matrix类型,这里T是参数模板比如整数Int,Float64等,T <: Number表示参数得是Number子类型
function restructure_matrix(M::Matrix{T}) where {T <: Number}
#Matrix其实是二维数组
Matrix
Array{T,2} where T
#Vector是维数为1的数组
Vector
Array{T,1} where T

例子,让返回值为指定类型,

function sinc(x)::Float64
    if x == 0
        return 1
    end
    return sin(pi*x)/(pi*x)
end

随便乱试,

字符串,符号以及字典

sym = Symbol("haha") #:haha
str = String("haha") #"haha"

dic = Dict([("C",7),("D",8),("A", 3), ("B", 2),("E",1)])
tem =keys(dic)
typeof(tem) #Base.KeySet

collect(tem)
typeof(collect(tem)) #Array{String,1}

collect(dic)
sort(collect(dic)) #按键排序
dic["B"]
dic[collect(keys(dic))[1]] #取字典第一个元素,字典键是无序(不按你加入顺序)的且“B”为第一个
sort(collect(keys(dic)))  #这时A才在前

#collect后是Pair的向量
dic
Dict{String,Int64} with 5 entries:
  "B" => 2
  "A" => 3
  "C" => 7
  "D" => 8
  "E" => 1
collect(dic)
5-element Array{Pair{String,Int64},1}:
 "B" => 2
 "A" => 3
 "C" => 7
 "D" => 8
 "E" => 1

例子,声明复合类型成员类型,

struct Foo
     bar #默认Any类型
     baz::Int
     qux::Float64
 end
#摸索一下
typeof(Foo)
Foo.bar #type DataType has no field bar
a = Foo(1,2,3)
#atom ctrl+/注释  atom 选中提示 设为 enter
typeof(a)   #Foo
a.bar
a.baz

数组挺重要的, ;另起一行,增加行数;空格另起一列,增加列数;分别相当于numpy中 np.r_[]np.c_[] (有时间好好总结,易忘记,官方说法是增加第一维与第二维,这不清晰,谁知道你往哪边数。。)

Xtest = [0 4 1;
         2 2 0;
         1 1 1]
3×3 Array{Int64,2}:
 0  4  1
 2  2  0
 1  1  1

更多例子,没时间解释了,跑跑,想想就知道,(浪费很长时间,用了再看,记此备案)

[1 3 2 4]
[[1 3] [2 4]]
1×4 Array{Int64,2}:
 1  3  2  4
[1 ;3; 2; 4]
[1 ,3 ,2, 4]
[[1, 3] ;[2, 4]]
4-element Array{Int64,1}:
 1
 3
 2
 4
[1 3; 2 4]
[[1 3] ;[2 4]]
2×2 Array{Int64,2}:
 1  3
 2  4
[[1 ,3] [2 ,4]] #[[1, 3] ;[2, 4]] add row
2×2 Array{Int64,2}:
 1  2
 3  4

附上python例子,

np.c_[np.array([[1,2,3]]), 0, 0, np.array([[4,5,6]])]
[[1 2 3 0 0 4 5 6]]
np.c_[np.array([1,2,3]), np.array([4,5,6])]
[[1 4]
 [2 5]
 [3 6]]
np.r_[np.array([1,2,3]), np.array([4,5,6])]
[0 1 2 3 4 5]
np.r_[np.array([1,2,3]), 0, 0, np.array([4,5,6])]
[1 2 3 0 0 4 5 6]

上面可能有点迷,在二维数组,这个规律更清晰,

x= np.c_[np.array([11,12]), np.array([14,15])]
y = np.arange(4).reshape(2,2)
y
array([[0, 1],
       [2, 3]])
x
array([[11, 14],
       [12, 15]])
np.c_[x,y] #列数增加
array([[11, 14,  0,  1],
       [12, 15,  2,  3]])

np.r_[x,y] #行数增加
array([[11, 14],
       [12, 15],
       [ 0,  1],
       [ 2,  3]])

复合类型

#复合类型 Composite Types
julia>
julia> foo = Foo("Hello, world.", 23, 1.5)
Foo("Hello, world.", 23, 1.5)

julia> typeof(foo)
Foo
#类型联合
julia> IntOrString = Union{Int,AbstractString}
Union{Int64, AbstractString}

julia> 1 :: IntOrString
1

julia> "Hello!" :: IntOrString
"Hello!"

julia> 1.0 :: IntOrString
ERROR: TypeError: in typeassert, expected Union{Int64, AbstractString}, got Float64
#有参数复合类型 Parametric Composite Types
julia> struct Point{T}
           x::T
           y::T
       end
#NTuple{N,T} is a convenient alias for Tuple{Vararg{T,N}}, i.e. a tuple type containing exactly N elements of type T.

原文地址:https://www.cnblogs.com/qizhien/p/11619986.html

时间: 2024-10-27 00:21:38

Julia初学备忘的相关文章

VS2008 Lua 编程环境搭建(初学备忘)

在VS 2008 中,导入 lua.h 之类的头文件后,编译含有Lua函数的时候,可能会出现如下错误: 1>main.obj : error LNK2019: 无法解析的外部符号_luaL_checkinteger,该符号在函数"int __cdecl add(struct lua_State *)" ([email protected]@[email protected]@@Z) 中被引用 1>main.obj : error LNK2019: 无法解析的外部符号_lua

css初学备忘

#test 选择一个id=test的对象 .test选择类名为test的标签 p.test选择所有p标签下面的test类标签 class and id不要用数字开头,firefox不支持 样式的层叠优先级别:由低到高 浏览器缺省设置 外部样式表 内部样式表(位于 <head> 标签内部) 内联样式(在 HTML 元素内部) body { background-image:url('img_tree.png'); background-repeat:no-repeat; background-p

Oracle使用备忘

初学Oracle,很多语句记不住,写在这里备忘. 1.查看某表空间的数据文件 select file_name 文件名, tablespace_name 表空间名, bytes/1024/1024 已使用大小M, maxbytes/1024/1024/1024 总大小M from dba_data_files where tablespace_name = 'ABCTBL'; 其中‘ABCTBL’为你要查询的表空间的名称. 2.为某表空间增加数据文件 ALTER TABLESPACE ABCTB

RxJava & RxAndroid备忘

"你问我要去向何方,我指着大海的方向" 今天在刷G+的时候看到Dave Smith推荐了一个视频 <Learning RxJava (for Android) by example> 点进去看了一下,原来是位熟悉的"阿三哥",视频封面如下:(没有歧视的意思,不要喷我啊~,为什么感到熟悉?接着往下看) 几乎同时也看到了JetBrains在G+也推荐了篇在Medium上的博文 <RxAndroid And Kotlin (Part 1)> ,然后

工作备忘:cacti&nagios登录密码修改方法

[[email protected]]# mysql -u root -p mysql> use cacti; mysql> select * from user_auth; mysql> update user_auth set password=md5("cactipasswd") where id='1'; 现在cacti登录的新密码就是cactipasswd [[email protected]]# /usr/bin/htpasswd /usr/local/n

备忘-linux文件系统结构

用apache的时候总是要进入/var/www, 用久了开始好奇这些个目录都是派什么用处的,简单整理了一下 /bin 存放二进制命令文件,这个目录下面不允许存在子目录/boot bootloader的静态文件,当然OS的文件也必须在这里/dev 设备文件,MAKEDEV命令可以创建设备/etc 特定主机的配置文件,必须是静态文件,非可执行文件: opt, X11, sgml, xml/home 用户目录 /lib 存放主要的共享库和核心模块/media 可移除媒体的挂载点: floppy, cd

[转]Windows环境下尝试安装并配置PHP PEAR备忘

转自:http://wangye.org/blog/archives/266/ 什么是PEAR 来自百度百科:PEAR 是PHP扩展与应用库(the PHP Extension and Application Repository)的缩写.它是一个PHP扩展及应用的一个代码仓库,简单地说,PEAR之于PHP就像是CPAN(Comprehensive Perl Archive Network)之于Perl. 由此可见PEAR是PHP代码的仓库,在这里可以找到很多有用的代码,避免我们重复写一些功能,

Table view 备忘

Table view 备忘 本篇会以备忘为主,主要是一些基础的代理方法和数据源方法具体的优化好点子会后续跟上. Table view的数据源方法 必须实现的数据源方法 // 返回每一行的cell,可以做缓存处理,同样也可能会造成复用问题. func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { // tableview 和 cell 都是在s

oracle下 启动subversion命令 及 oracle相关服务启动备忘

linux shell下  svnserve - d -r + 目录   例如:svnserve -d -r /svn 启动 svn服务. 访问svn://192.168.0.120/kjcg 测试. 启动oracle: 一.如何启动数据库实例 1.进入到sqlplus启动实例 [[email protected] ~]$ su - oracle --“切换到oracle用户” 2. Password: [[email protected] ~]$ lsnrctl start  --“打开监听”