numpy数组不可以扩展
可是它最大的缺点就是不可动态扩展——“NumPy的数组没有这种动态改变大小的功能,numpy.append()函数每次都会重新分配整个数组,并把原来的数组复制到新数组中。
http://blog.chinaunix.net/uid-23100982-id-3164530.html
numpy数组的展平
可以用flatten,也可以用numpy.ravel()
比如下面这个数组
arr = np.arange(10).reshape(1,2,5)
Out[40]:
array([[[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]]])
可以使用fatten和ravel函数进行展平
arr.flatten()
numpy.ravel(arr)
Out[41]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
numpy数组合并
如果只有两个元素,那么用append合并就行
如果有三个或者以上的元素,那么用numpy.concatenate这个函数
numpy.concatenate((a1, a2, ...), axis=0)
把n个数组放到一个tuple里面,作为一个大参数(a1, a2, ...)放到concatenate这个函数里面
python list 合并
python list合并,可以用append,extend,也可以直接用+号进行
z=x+y
numpy 数组的初始化和循环填充
有的时候想新建个array,然后通过循环不断append补充这个数组。后来看到stackoverflow上说这个是非常低效率的。
numpy的array一般是先初始化好尺寸的数组,全附上0,然后再一个一个修改这个值。而不是不断的扩充数组结构。
比如下面这个就是不太推荐的写法
big_array # Initially empty. This is where I don't know what to specify for i in range(5): array i of shape = (2,4) created. add to big_array
参考http://stackoverflow.com/questions/4535374/initialize-a-numpy-array
python目录遍历
一个用os库
一个用glob库
list,array,dataframe,mat 几个容器的使用
list如果能用就用,最底层,效率也最高的元素,而且支持字符和数字混搭
np的array付给他更多的操作,但是不支持字符,需要chararray才能混搭,chararray其实功能不是特别强大,所以不推荐numpy的数组里面混搭文字和数字
np的dataframe适合大小规模的选择和操作,但是不适合一点点增添,最好是先把一个大的array都鼓捣好了一个,一整个array直接全塞进去。
所以基本是简单的数据用list,需要做处理的中低层的数据用array,然后烩成一锅全装进dataframe做大规模范围的数据分析。 如果需要矩阵操作的时候才使用numpy的mat
这是我的理解。
许多python和numpy对某个数据的处理,不会改变数据本身,而是把结果拷贝出来输出给其他对象
比如s.join('something')
arr.append(arr2)
对dataframe columns的选择
dataframe一般都是根据标签选择列,比如dataframe['feature1']
同时也可以使用ix,按照列数进行选择,比如选择第一列和第二列 df.ix[:,0:2]
如果选择的是多个列,那么会返回的是dataframe对象
而如果只选择一个列,那么会返回series对象,这个比较蛋疼。
python format字符串的输出
str.format() //str是字符串
1) format函数前的str字符串可以用{}来做占位符
‘a is {},b is {}’.format(a,b)
2) 也可以在{}里面加数字用来和后面的变量进行对应
‘a is {1},b is {2}, a is {1}’.format(a,b)
‘my name is {0[0]},his name is {0[1]}’.format(lis)
4) {}里面还可以对输出的精度和进制进行输出
'the number is {:.2f}'.format(332.245)
'the binary value of the number is {:b}'.format(332.245)
df.fillna(inplace=True, method='ffill') inplace就是自己替换自己了
两个1*20的数组如何合成一个2*20的数组?用asarray
np.asarray(np.random.randn(10),np.random.randn(10))