numpy上手笔记
2016-05-03 14:57
597 查看
这是没整理的,要看就看图片,和代码中加注释的部分,代码都是抄书上的,太乱,我的心太乱,要一些空白,
定义数据,和数据类型
改变数据类型:用.astype()或把数据类型作为一个函数使用
提一下,这里有python对象和dtype对象之分;
2.numpy内置的方式创建,如arange,ones,zeros,
3.从磁盘的标准格式或定制格式
4.从使用了字符串或缓存的原始数据创建数组
这里用到了genfromtxt()函数,而且还要导入StringIO,内容好像蛮多的,得单独整理
5.使用专门库的函数创建,如random
布尔类型的索引
貌似有点困难,下面单独看好理解点:
列表x,其索引x[],括号中的‘,‘表示且的关系,逗号两边可以是一个数,一个切片,一个数组例如,需要注意的是逗号两边同为数组的情况下,数组的长度要一样,并且这个时候
numpy的数据类型:
定义数据,和数据类型
import numpy as np x = np.float32(1.0) y = np.int_([1,2,4]) z = np.arange(3,dtype=np.unit8) z = np.arange(3,dtype='f') z = np.array([1,2,3],dtype='f')#和上面语句一样的结果
改变数据类型:用.astype()或把数据类型作为一个函数使用
z = np.arange(3, dtype=np.uint8) z.astype(float) np.int8(z)
提一下,这里有python对象和dtype对象之分;
>>> z.dtype dtype(’uint8’) >>> d = np.dtype(int) >>> d dtype(’int32’) >>> np.issubdtype(d, int) True >>> np.issubdtype(d, float) False
创建数组:一般5种方式创建数组
1.从其他python结构转变,如列表,元祖>>> x = np.array([2,3,1,0]) >>> x = np.array([2, 3, 1, 0]) >>> x = np.array([[1,2.0],[0,0],(1+1j,3.)]) # note mix of tuple and lists,and types >>> x = np.array([[ 1.+0.j, 2.+0.j], [ 0.+0.j, 0.+0.j], [ 1.+1.j, 3.+0.j]])
2.numpy内置的方式创建,如arange,ones,zeros,
>>> np.arange(10) array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> np.arange(2, 10, dtype=np.float) array([ 2., 3., 4., 5., 6., 7., 8., 9.]) >>> np.arange(2, 3, 0.1) array([ 2. , 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9]) >>> np.linspace(1., 4., 6) array([ 1. , 1.6, 2.2, 2.8, 3.4, 4. ]) >>> np.indices((3,3)) array([[[0, 0, 0], [1, 1, 1], [2, 2, 2]], [[0, 1, 2], [0, 1, 2], [0, 1, 2]]])
3.从磁盘的标准格式或定制格式
4.从使用了字符串或缓存的原始数据创建数组
这里用到了genfromtxt()函数,而且还要导入StringIO,内容好像蛮多的,得单独整理
5.使用专门库的函数创建,如random
数组的索引
>>> x = np.arange(10) >>> x.shape = (2,5) >>> x.reshape(2,5)#和上句一样的效果,但是上句改变了x的形状,此句x依然是原先的一维数组, >>> x = np.arange(10) >>> x[2:5] array([2, 3, 4]) >>> x[:-7] array([0, 1, 2]) >>> x[1:7:2]#这里注意,python的list是不具有间隔切片 array([1, 3, 5]) >>> y = np.arange(35).reshape(5,7) >>> y[1:5:2,::3]#别弄错成了y[1:5:2][::3] array([[ 7, 10, 13], [21, 24, 27]]) >>> x = np.arange(10,1,-1) >>> x array([10, 9, 8, 7, 6, 5, 4, 3, 2]) >>> x[n 4000 p.array([3, 3, 1, 8])]#以3,3,1,8索引位的数创建数组 array([7, 7, 9, 2]) >>> x[np.array([3,3,-3,8])] array([7, 7, 4, 2]) >>> x[np.array([3, 3, 20, 8])] <type ’exceptions.IndexError’>: index 20 out of bounds 0<=index<9 >>> x[np.array([[1,1],[2,3]])] array([[9, 9], [8, 7]])
多维数组的索引,
乱七八糟的,还是画图吧>>> y[np.array([0,2,4]), np.array([0,1,2])]#这里的y就是上面创建的5*7的二维数组,这里可以理解成x坐标0,2,4,y坐标0,1,2的三个数 array([ 0, 15, 30]) >>> y[np.array([0,2,4]), np.array([0,1])] <type ’exceptions.ValueError’>: shape mismatch: objects cannot be broadcast to a single shape >>> y[np.array([0,2,4]),0:1] array([[ 0], [14], [28]]) >>> y[np.array([0,2,4]), 1] array([ 1, 15, 29]) >>> y[np.array([0,2,4])]#取0行,2行,4行 array([[ 0, 1, 2, 3, 4, 5, 6], [14, 15, 16, 17, 18, 19, 20], [28, 29, 30, 31, 32, 33, 34]])
布尔类型的索引
>>> b = y>20 >>> y[b] array([21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34]) >>> b[:,5] # use a 1-D boolean whose first dim agrees with the first dim of y array([False, False, False, True, True], dtype=bool) >>> y[b[:,5]] array([[21, 22, 23, 24, 25, 26, 27], [28, 29, 30, 31, 32, 33, 34]]) >>> x = np.arange(30).reshape(2,3,5) >>> x array([[[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14]], [[15, 16, 17, 18, 19], [20, 21, 22, 23, 24], [25, 26, 27, 28, 29]]]) >>> b = np.array([[True, True, False], [False, True, True]]) >>> x[b] array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [20, 21, 22, 23, 24], [25, 26, 27, 28, 29]]) >>> y[b[:,5],1:3] array([[22, 23], [29, 30]])
貌似有点困难,下面单独看好理解点:
>>> b = y>20 >>> b array([[False, False, False, False, False, False, False], [False, False, False, False, False, False, False], [False, False, False, False, False, False, False], [ True, True, True, True, True, True, True], [ True, True, True, True, True, True, True]], dtype=bool) >>> b[:,5] array([False, False, False, True, True], dtype=bool) >>> y[b[:,5]]#这里就等于y[np.array([False, False, False, True, True], dtype=bool)],只取后两行为true的 array([[21, 22, 23, 24, 25, 26, 27], [28, 29, 30, 31, 32, 33, 34]]) >>>
列表x,其索引x[],括号中的‘,‘表示且的关系,逗号两边可以是一个数,一个切片,一个数组例如,需要注意的是逗号两边同为数组的情况下,数组的长度要一样,并且这个时候
>>> x = np.arange(32) >>> x[[1,2,5]] array([1, 2, 5]) >>> x.shape = (4,8) >>> x[[1,2,0],[3,5]] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: shape mismatch: indexing arrays could not be broadcast together with shapes (3,) (2,) >>> x[[1,2,0],[3,5,2]] array([11, 21, 2]) >>> x array([[ 0, 1, 2, 3, 4, 5, 6, 7], [ 8, 9, 10, 11, 12, 13, 14, 15], [16, 17, 18, 19, 20, 21, 22, 23], [24, 25, 26, 27, 28, 29, 30, 31]]) >>> x[[1,2]] array([[ 8, 9, 10, 11, 12, 13, 14, 15], [16, 17, 18, 19, 20, 21, 22, 23]]) >>> x[[1,2],[5,7]] array([13, 23]) >>> x[3,5] 29 >>> x[3][5] 29 >>> x[1,2][5,7] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: invalid index to scalar variable.
相关文章推荐
- 利用Python和OpenCV库将URL转换为OpenCV格式的方法
- Python NumPy库安装使用笔记
- Python中的Numpy入门教程
- NumPy基础(一)
- 安装numpy matplotlib
- python+numpy+scipy=matlab,抛弃matlab
- Python安装matplotlib所需要的软件以及问题的解决方法
- 例2.1.1的Numpy实现
- matplotlib初试——求两条直线相交的大概位置
- 绘制弹性模量的变化
- theano学习札记
- ParaView - Mixing NumPy and VTK APIs with high efficient using Python Programmable filter
- 开始正式写博客的第一天
- 新手学NumPy
- 创建视图和副本
- 来自bit.ly的1.usa.gov数据
- windows下安装Python以及numpy、scipy、scitik-learn模块(3.4版本)
- python几个工具包的安装
- openblas+lapack numpy scipy
- NumPy 模块 常用方法 学习