- 字符串转化为jsondict
#eval()——多层使用就不行了
a='{"a":{"b1":1,"b2":2}}'
eval(b)
#常用方式 json.loads(str)
import json
print( json.loads(str))
#正则中,|前后是两部分,选择时,需要加入(?: A | B)
s = 'I have a dog , I have a cat'
re.findall( r'I have a (?:dog|cat)' , s )
**‘|’ **或规则
将两个规则并列起来,以‘|’连接,表示只要满足其中之一就可以匹配。比如
[a-zA-Z]|[0-9] 表示满足数字或字母就可以匹配,这个规则等价于 [a-zA-Z0-9]
注意:关于’|’要注意两点:
第一, 它在’[‘ ‘]’之中不再表示或,而表示他本身的字符。如果要在’[‘ ‘]’外面表示一个’|’字符,必须用反斜杠引导,即 ’/|’ ;
第二, 它的有效范围是它两边的整条规则,比如‘dog|cat’匹配的是‘dog’和’cat’,而不是’g’和’c’。如果想限定它的有效范围,必需使用一个无捕获组 ‘(?: )’包起来。比如要匹配 ‘I have a dog’或’I have a cat’,需要写成r’I have a (?:dog|cat)’ ,而不能写成 r’I have a dog|cat’
例
>>> s = ‘I have a dog , I have a cat’
>>> re.findall( r’I have a (?:dog|cat)’ , s )
[‘I have a dog’, ‘I have a cat’] #正如我们所要的
下面再看看不用无捕获组会是什么后果:
>>> re.findall( r’I have a dog|cat’ , s )
[‘I have a dog’, ‘cat’] #它将’I have a dog’ 和’cat’当成两个规则了
至于无捕获组的使用,后面将仔细说明。这里先跳过。
pd.DataFrame 更改元素值时:
import numpy as np
df=pd.DataFrame(np.arange(12).reshape(4,3).astype(str),columns=['A','B','C'])
df['A'][1]=1
print(type(df['A'][1])#/int
#有时出现无法赋值的情况,推荐用以下方式赋值loc
df.loc[1,'A']=1
#print(type(df.loc[1,'A']))
安装basemap
$ wget https://github.com/matplotlib/basemap/archive/v1.1.0.tar.gz
$ tar zxf v1.1.0.tar.gz
$ cd basemap-1.1.0/
$ cd geos-3.3.3 # 安装 GEOS
$ sudo mkdir /opt/geos && sudo chown -R $USER /opt/geos
$ export GEOS_DIR=/opt/geos
$ ./configure --prefix=$GEOS_DIR
$ make && make install
#安装时如果提醒没有pyproj需要安装
$ conda install pyproj
或者
$pip install pyproj
$ cd ..
$ python setup.py install # 安装 basemap
#验证 无报错即成功
$ python -c 'from mpl_toolkits.basemap import Basemap'
f, ax1 = plt.subplots()
plt.figure() # Create a new figure
y = df['MEDV']
for i in range (1,8):
number = 420 + i
ax1.locator_params(nbins=3)#设定坐标轴被分为几分,也可以指定坐标被分为几分
ax1 = plt.subplot(number)#自动拆解为(4,2,i)即,总共有4x2个图表,第i个图画图,
plt.title(list(df)[i])
ax1.scatter(df[df.columns[i]],y) #Plot a scatter draw of the datapoints
plt.tight_layout(pad=0.4, w_pad=0.5, h_pad=1.0)#设置每个子图之间的上下左右之间的间隔,
shuffle() 方法将序列的所有元素随机排序。
pandas.shuffle()
from sklearn.utils import shuffle
tf.scalar_summary =>tf.summary.scalar 将一个纯数转化为一个张量,一维的张量,在TensorBound上显示
'''
scalar(name,tensor,collections=None,family=None)
函数参数
name:生成节点的名字,也会作为TensorBoard中的系列的名字。
tensor:包含一个值的实数Tensor。
collection:图的集合键值的可选列表。新的求和op被添加到这个集合中。缺省为[GraphKeys.SUMMARIES]
family:可选项;设置时用作求和标签名称的前缀,这影响着TensorBoard所显示的标签名。
函数简介
返回值:一个字符串类型的标量张量,包含一个Summaryprotobuf
返回错误:ValueErrortensor有错误的类型或shape。
函数求出的Summary中有一个包含输入tensor的Tensor.proto
'''
tf.train.SummaryWriter => tf.summary.FileWriter
'''
tf.summary.merge_all
merge_all 可以将所有summary全部保存到磁盘,以便tensorboard显示。如果没有特殊要求,一般用这一句就可一显示训练时的各种信息了。
'''
tf.train.SummaryWriter => tf.summary.FileWriter
'''
tf.summary.FileWriter
指定一个文件用来保存图。
格式:tf.summary.FileWritter(path,sess.graph)
可以调用其add_summary()方法将训练过程数据保存在filewriter指定的文件中
ummary_waiter = tf.summary.FileWriter("log",tf.get_default_graph())
log是事件文件所在的目录,这里是工程目录下的log目录。第二个参数是事件文件要记录的图,也就是tensorflow默认的图。
'''
tf.initialize_all_variables() ==> tf.global_variables_initializer()
https://blog.youkuaiyun.com/shenxiaolu1984/article/details/52815641
将summary和varible讲的比较深入!!
#tf.slice(points.initialized_value(), [0,0], [K,2]
'''
从points的[0,0]为起点,各维度截取K,2个值,即axis=0上截取0——k+0维,在axis=1上截取0——2+0维度
'''
#tf.tile(centroids, [N, 1])
'''
对centroids的axis=0上复制N次,在axis=1上复制一次组成一个张量,axis的长度不变,只相应的变各axis的维度。
'''
#tf.reduce_sum(tf.square(rep_points - rep_centroids), reduction_indices=2)
'''
tf.square(rep_points - rep_centroids):表示各元素取平方值
tf.reduce_sum(a,reduction_indices=2):表示在axis=2上进行sum
'''
#tf.argmin(sum_squares, 1)
'''
在axis=1上寻找相应的最小值索引
'''
#tf.not_equal(best_centroids, cluster_assignments)
'''
对应元素是否相同
'''
#tf.reduce_any(tf.not_equal(best_centroids, cluster_assignments))
'''
x = tf.constant([[True, True], [False, False]])
tf.reduce_any(x) # True
tf.reduce_any(x, 0) # [True, True]
tf.reduce_any(x, 1) # [True, False]
'''
#tf.unsorted_segment_sum(points, best_centroids, K)
'''
https://blog.youkuaiyun.com/guotong1988/article/details/77622790
按照best_centroids对应的分片,后对应元素进行相加,其中best_centroids 即为对应分片值,
K为其best_centroids的取值范围[0,K),即最后剩余的分片维度
'''
#
-
glob
通配符,用来模糊匹配路径下的文件及子文件数据:
通配符是一些特殊符号,主要有星号()和问号(?),用来模糊搜索文件,“”可以匹配任意个数个符号, “?”可以匹配单个字符。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者需要匹配符合一定条件的多个目标文件时,可以使用通配符代替一个或多个真正的字符。
https://blog.youkuaiyun.com/dcrmg/article/details/78309469
glob(pathname, recursive=False)
第一个参数pathname为需要匹配的字符串。(该参数应尽量加上r前缀,以免发生不必要的错误)
第二个参数代表递归调用,与特殊通配符“**”一同使用,默认为False。
该函数返回一个符合条件的路径的字符串列表,如果使用的是Windows系统,路径上的“\”符号会自动加上转义符号变为“\”。iglob(pathname, recursive=False)
参数与glob()一致。
返回一个迭代器,该迭代器不会同时保存所有匹配到的路径,而是逐个获取匹配的文件路径名,遍历该迭代器的结果与使用相同参数调用glob()的返回结果一致。通配符 功能 * 匹配0或多个字符 ** 匹配所有文件、目录、子目录和子目录里的文件(3.5版本新增) ? 匹配1个字符,与正则表达式里的?不同 [exp] 匹配指定范围内的字符,如:[1-9]匹配1至9范围内的字符 [!exp] 匹配不在指定范围内的字符 import glob glob.glob('./**')
-
numpy读存储文件
https://www.cnblogs.com/sunshinewang/p/8892330.html
- 一维或二维文件
np.savetext()——.gz,.bz2文件
np.loadtxt()——.gz,.bz2文件
np.savetxt() np.loadtxt()只能有效存取一维和二维数组。
- 多维文件
a.tofile(frame, sep='', format='%s')
- frame : 文件、字符串
- sep : 数据分割字符串,如果是空串,写入文件为二进制。即,默认为空串。
- format : 写入数据的格式
np.fromfile(frame, dtype=float, count=‐1, sep='')
- frame : 文件、字符串
- dtype : 读取的数据类型 。可以发现,我们读取数据的时候都需要指定数据类型,无论是不是一维二维。默认为浮点型
- count : 读入元素个数, ‐1表示读入整个文件
- sep : 数据分割字符串,如果是空串,写入文件为二进制
如果不指定分隔符,则读取也不需要指定,此时存储的是二进制文件。
np.save(fname, array) 或 np.savez(fname, array)
- fname : 文件名,以.npy为扩展名,压缩扩展名为.npz
- array : 数组变量
np.load(fname)
- fname : 文件名,以.npy为扩展名,压缩扩展名为.npz
-
ravel()——flatten()——flat()
.ravel()——返回一个视图,即创建一个指针而已,对其修改即为对原始数据的修改。
.flatten()——返回一个拷贝,对其修改不影响之前的数据。
.flat——同ravel()
两者的区别在于返回拷贝(copy)还是返回视图(view),numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响(reflects)原始矩阵,而numpy.ravel()返回的是视图(view,也颇有几分C/C++引用reference的意味),会影响(reflects)原始矩阵。
**将array转化为一个迭代器
x = np.array([[1, 2], [3, 4]])
y1=x.ravel()#创建指针索引
y2=x.flatten()#拷贝一份
>>> x
array([[1, 2],
[3, 4]])
>>> x.flatten()
array([1, 2, 3, 4])
>>> x.ravel()
array([1, 2, 3, 4])
>>> x.flat[:]#区别
array([1, 2, 3, 4])
#两者默认均是行序优先
>>> x.flatten('F')
array([1, 3, 2, 4])
>>> x.ravel('F')
array([1, 3, 2, 4])
flatten(order=’*’)
可选参数,order:{‘C’,‘F’,‘A’,‘K’}
- ‘C’:C-style,行序优先
- ‘F’:Fortran-style,列序优先
- ‘A’:if a is Fortran contiguous in memory ,flatten in column_major order
- ‘K’:按照元素在内存出现的顺序进行排序
默认为’C’
https://blog.youkuaiyun.com/bubble_story/article/details/79531495