C与指针读书笔记

第一章 快速上手

1.1 简介

  1. 使用#if 0 与#endif 比//能更好的完成逻辑上删除代码的功能。
  2. 预处理指令由预处理器解释,预处理器读入源代码,根据预处理指令对其进行修改,然后把修改过得源代码交给编译器。
  3. C 函数的参数传递规则:所有传给函数的参数都是值传递。

1.2

  1. 常见的字段函数:putchar、getchar、ctrcpy、ctrncpy、strcat、strchr、strstr

第三章 数据

3.1 基本数据类型

  1. 四种:整形、浮点型、指针和聚合类型。(注意没有布尔类型,任何非零值都是 true,包括负数)。
  2. 整形包括字符、短整型、整形和长整型。都可以再分为 signed 和 unsigned。

3.4 常量

  1. int const *p可以修改指针的值,不能修改它指向的值。
  2. int * const p指针不能修改,但是可以修改它指向的值。
  3. #define 也是创建常量的手段。

3.5 作用域

  1. 代码块作用域、文件作用域、原型作用域、函数作用域
  2. 链接属性:external、internal、none。extern 和 static 可以用于修改链接属性。具有 external 属性的实体常称为全局变量。

    Read More

CS224笔记之循环神经网络

RNN

如果训练普通神经网络是对函数的优化,那么训练循环网络就是对程序的优化。

简介

从多层网络出发到循环网络,我们需要利用上世纪 80 年代机器学习和统计模型早期思想的优点:在模型的不同部分共享参数。参数共享使得模型能够扩展到不同形式的样本(这里指不同长度的样本)并进行泛化。如果我们在每个时间点都有一个单独的参数,我们不但不能泛化到训练时没有见过序列长度,也不能在时间上共享不同序列长度和不同位置的统计强度。当信息的特定部分会在序列内多个位置出现时,这样的共享尤为重要。比如“I go to work in 2020.”和“In 2020,I go to work.”语义一致。假设我们要训练一个处理固定长度句子的前馈网络。传统的全连接前馈网络会给每个输入特征分配一个单独的参数,所以需要分别学习句子每个位置的所有语言规则。相比之下,循环神经网络在几个时间步内共享相同的权重,不需要分别学习句子每个位置的所有语言规则。
类似的思路,其实在一维序列上使用卷及神经网络依然使得模型可以跨时间的共享参数。

Read More

python中的csv包

写这篇短博客的主要目的在于记录一下csv包中的几个字段的使用,用于pandas的read_csv函数应该是内部调用csv包,之前处理流量数据的时候有几个脏数据影响了整个文件的读取,后来发现是csv配置常量的设置问题。

主要的问题出在几个用于设置读取和写出格式的问题的配置。下面列在下面:

  • delimiter:用作分隔符的单个,默认为英文逗号
  • quotechar:可以被设置为任一单个字符,当字段中出现特殊字符(delimiter,quotechar,换行符)时,用该字符包裹该字段,默认为英文双引号。
  • doublequote:当字段内容中有quotechar的时候,不但该字段需要用quotechar包裹,内部的quotechar还要进行转义,doublequote就是默认开启的转义方法,即将内容中的quoechar给double一下子。默认为True
  • escapechar:当然,除了上面提到的doublequote的转义方法,可能有的人还是习惯于前缀转义符的方法,那么这个就是了。可以被设置为单个字符。读取的时候escapechar后面紧跟着的字符会被直接取消特殊含义。其优先级低于doublequote,如果想使用它,首先要将doublequote设置为False,而且当使用escapechar时,如果字段内有quotechar,整个字段不会被quotechar包裹,而是仅仅进行一下前缀转义。当quoting设置为QUOTE_NONE且doublequote设置为false时,写出会报错。
  • lineterminator:换行符,默认为”\r\n”,注意的是当前版本的自定义换行符只支持在写出的时候有用。
  • quoting:quote方式,有QUOTE_NONE, QUOTE_MINIMAL, QUOTE_ALL和QUOTE_NONNUMERIC四种,默认为QUOTE_MINIMAL。具体意义就是在何时使用quoting,分别是:不使用、对有特殊符号的字段使用、对全部字段使用、对非数字字段使用。
  • skipinitialspace:只在读入的时候有用,用于跳过分隔符后面的空格,默认为False。
  • strict:没用到过。

但是如果每次使用的使用都要设置这么多信息的话太过繁琐,因此csv包提供Dialect包提供配置信息的统一设置。我在这里把Dialect译为风格吧。系统预设几种风格分别是:unix/excel/excel-tab。

  • register_dialect:注册自定义风格名称与具体信息。
  • unregister_dialect:取消注册
  • get_dialect
  • list_dialects
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
csv.register_dialect("mydialect", delimiter=",", doublequote=False, skipinitialspace=True, quoting=csv.QUOTE_MINIMAL, quotechar="\"", lineterminator="\n", escapechar="\\")

l = [['asd','zxc','hello,world'],['he say:"i love you"', 'apple', 'pear'],['1','2','quote char is "']]

with open("temp.csv", 'w') as csvfile:
csvwriter = csv.writer(csvfile, dialect="mydialect")
for line in l:
<!-- more -->
csvwriter.writerow(line)

with open("temp.csv", 'r') as csvfile:
reader = csv.reader(csvfile, dialect="mydialect")
result = []
for row in reader:
result.append(row)
本站总访问量