numpy上手笔记

来源:互联网 发布:lm555中文数据手册 编辑:程序博客网 时间:2024/05/02 23:19

这是没整理的,要看就看图片,和代码中加注释的部分,代码都是抄书上的,太乱,我的心太乱,要一些空白,

numpy的数据类型:

这里写图片描述
定义数据,和数据类型

import numpy as npx = 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.dtypedtype(’uint8’)>>> d = np.dtype(int)>>> ddtype(’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)>>> xarray([10, 9, 8, 7, 6, 5, 4, 3, 2])>>> x[np.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 yarray([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)>>> xarray([[[ 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)],只取后两行为truearray([[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])>>> xarray([[ 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.
0 0
原创粉丝点击