【python】numpy学习笔记
来源:互联网 发布:舆情大数据指数 编辑:程序博客网 时间:2024/05/17 10:25
numpy的类型名为ndarray。
基础
- ndarray.ndim:array的维度
- ndarray.shape:每个维度的长度
- ndarray.size:shape各个元素的乘积
- ndarray.dtype:元素类型
- ndarray.itemsize:元素字节数
创建
a = array( [2,3,4] )
>>>a
array([2, 3, 4])c = array( [ [1,2], [3,4] ], dtype=complex )
>>> c
array([[ 1.+0.j, 2.+0.j],
[ 3.+0.j, 4.+0.j]])zeros, zeros_like(a)–跟a同样shape的zero矩阵,ones, empty(随机数)
arange( 0, 2, 0.3 ) 无法控制数量
array([ 0. , 0.3, 0.6, 0.9, 1.2, 1.5, 1.8])
linspace( 0, 2, 9 ) 更好的控制数量
array([ 0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ])
reshape: c = arange(24).reshape(2,3,4)
>>> print c
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]][[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]fromfunction()
>>> def f(i,j):
… return i**2 + j**2
…
>>> fromfunction(f, (3,3)) ———— i取值0,1,2,j取值0,1,2
array([[0, 1, 4],
[1, 2, 5],
[4, 5, 8]])repeat, tile, vstack, hstack, and concatenate
a = array([[1, 2], [3, 4]])repeat(a,3)————每个元素重复三遍
array([1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4])
tile(a,3)——————matrix重复三遍
array([[1, 2, 1, 2, 1, 2],
[3, 4, 3, 4, 3, 4]])
基础运算
- 元素运算
+ , - , *, / , **, >, < ,sin(), exp()等等。 - 矩阵运算
dot(a,b):矩阵相乘 - 统计运算
矩阵a,a.sum(axis=1), a.max(axis=0), a.min(), a.cumsum(axis=1) - 其他
all, alltrue, any, apply along axis, argmax, argmin, argsort, average, bincount, ceil, clip, conj, conjugate, corrcoef, cov, cross, cumprod, cumsum, diff, dot, floor, inner, inv, lexsort, max, maximum, mean, median, min, minimum, nonzero, outer, prod, re, round, sometrue, sort, std, sum, trace, transpose, var, vdot, vectorize, where
索引 分片 迭代
向量数据
a = arange(10)**3>>> a
array([ 0, 1, 8, 27, 64, 125, 216, 343, 512, 729])>>> a[2]
8
>>> a[2:5] ——————第三到第六个元素
array([ 8, 27, 64])
>>> a[:6:2] = -1000 ————从开始到第7个元素,2nd的=-1000
>>> a
array([-1000, 1, -1000, 27, -1000, 125, 216, 343, 512, 729])
>>> a[ : :-1] ——————逆转a
array([ 729, 512, 343, 216, 125, -1000, 27, -1000, 1, -1000])
>>> for i in a:
print i**(1/3.),
nan 1.0 nan 3.0 nan 5.0 6.0 7.0 8.0 9.0多维数据
>>> def f(x,y):
… return 10*x+y
…
>>> b = fromfunction(f,(5,4),dtype=int)
>>> b
array([[ 0, 1, 2, 3],
[10, 11, 12, 13],
[20, 21, 22, 23],
[30, 31, 32, 33],
[40, 41, 42, 43]])
>>> b[2,3]
23
>>> b[0:5, 1] ———从0行开始,到5行,第2列
array([ 1, 11, 21, 31, 41])
>>> b[ : ,1] ————所有行,第2列
array([ 1, 11, 21, 31, 41])
>>> b[1:3, : ] —————从第二行开始,到第三行,所有列
array([[10, 11, 12, 13],
[20, 21, 22, 23]])
>>> b[-1] ——————最后一行
array([40, 41, 42, 43])
c.shape——————(2, 2, 3)
c[1,…] 相当于 c[1,:,:]
c[…,1] 相当于 c[:,:,1]
3. 其他
newaxis, ndenumerate, indices, index exp
shape操作
形状维度改变
a = floor(10*random.random((3,4)))>>> a
array([[ 7., 5., 9., 3.],
[ 7., 2., 7., 8.],
[ 6., 8., 3., 2.]])- a.ravel() ——————拉平,是a的view
- a.flatten()——————拉平,是a的copy
array([ 7., 5., 9., 3., 7., 2., 7., 8., 6., 8., 3., 2.]) - a.shape = (6, 2)——————改变形状
a.transpose()——————行转列,列转行
array([[ 7., 9., 7., 7., 6., 3.],
[ 5., 3., 2., 8., 8., 2.]])a.reshape(a形状不变), a.resize(a的形状随之改变)
合并不同array
>>> a
array([[ 1., 1.],
[ 5., 8.]])
>>> b = floor(10*random.random((2,2)))
>>> b
array([[ 3., 3.],
[ 6., 0.]])
**>>> vstack((a,b))——————列方向合并,沿第一个维度**
array([[ 1., 1.],
[ 5., 8.],
[ 3., 3.],
[ 6., 0.]])
**>>> hstack((a,b))——————行方向合并,沿第二个维度**
array([[ 1., 1., 3., 3.],
[ 5., 8., 6., 0.]])
column-stack 同 vstack,row-stack 同 hstack
r_[] 和c_[]:沿着某个维度方向生成array
concatenate((x,y),axis=1)沿指定维度合并- 分割array
hsplit(a,3) 沿横轴将a均分为3个
hsplit(a,(3,4)) 在第三列和第四列后切割
vsplit,沿纵轴分割
- 分割array
分割出来的array相当于原array的view,修改slice array会修改原array。
如:
>>> c = a.view()
>>> c is a
False
>>> c.base is a
True
>>> c.flags.owndata
False
>>> c.shape = 2,6 ————a的形状不变
>>> a.shape
(3, 4)
>>> c[0,4] = 1234 ————a的数据随之改变
>>> a
array([[ 0, 1, 2, 3],
[1234, 5, 6, 7],
[ 8, 9, 10, 11]])
indexing
a = arange(12)**2
i = array( [ 1,1,3,8,5 ] )
>>> a[i]
array([ 1, 1, 9, 64, 25])
j = array( [ [ 3, 4], [ 9, 7 ] ] )
>>> a[j]
array([[ 9, 16],
[81, 49]])
B = array([n for n in range(5)])
row_mask = array([True, False, True, False, False])
B[row_mask]
array([0, 2])
mask = (1 < B) * (B < 3)
mask
array([False,False,True,Fales,False],dtype = bool)
B[mask]
array([2])
indices = where(mask) ——————indices转换成位置array
B[indices]
array([2])
**diag——————显示对角线上的元素
diag(A,-1)——————显示对角线前一斜列的元素**
take
A.take(row_indices) 同 A[row_indices]
但是take 也适用于 lists和其他对象。
choose
which = [1, 0, 1, 0]
choices = [[-2,-2,-2,-2], [5,5,5,5]]
choose(which, choices)
从choices的array中选择which。choices的长度应跟which的长度一致。
- 【python】numpy学习笔记
- Python Numpy学习笔记
- Python Numpy 学习笔记
- python numpy 库学习笔记
- python numpy 学习笔记(9)
- python numpy 学习笔记(10)
- CS231n学习笔记-1.Python&Numpy学习
- [Python] Numpy学习笔记(一)
- [Python] Numpy学习笔记(二)
- python学习笔记之numpy入门
- python学习笔记(2)--------Numpy
- Python Numpy 学习笔记(2)
- Python Numpy 学习笔记(3)
- 【python学习笔记】16:numpy数组四则运算
- 【python学习笔记】17:numpy数组排序
- python numpy学习笔记(4)
- python numpy学习笔记(5)
- 【python学习笔记】21:numpy傅里叶变换
- 虚幻4的Style
- 魅族手机中屏蔽ListView下拉悬停方法
- 腾讯2015暑期实习电话面试总结
- poj 2239 Selecting Courses 【二分图最大匹配】
- jQuery 中的 each()
- 【python】numpy学习笔记
- java学习(二)
- Eclipse:An internal error occurred during: "Build Project". GC overhead limit exceeded
- 如何一次拿到php函数中的所有参数的实参值?
- ZOJ--(5464)Valid Pattern Lock
- WCF入门简单教程(图文) VS2010
- 黑马程序员------------反射技术
- Linux进程间通信——信号
- android压缩照片到指定大小100%可靠