Python数据分析--Numpy部分笔记
来源:互联网 发布:手机上怎么找淘宝客服 编辑:程序博客网 时间:2024/05/22 06:07
基础内容
NumPy面向的是N维数组对象(ndarray),但并不一定是方阵。其语法与标量一样。
ndarray内元素须是相同类型的,每个ndarray都有shape(表示各维度大小的元组)和dtype(说明数组数据类型的对象),例如data是一个3*2矩阵,其内是float型数据:
In : data.shapeOut: (2,3)In : data.dtypeOut: dtype('float64')
在使用pycharm进行创建ndarray时,出现错误,我将程序名称命名为numpy.py,之后在程序中import numpy as np,出现如下错误(图片为截图):
查阅资料发现因为文件名为numpy.py,在import numpy时选择了numpy.py而非numpy模块,参考https://stackoverflow.com/questions/36530726/using-numpy-module-object-has-no-attribute-array
1、关于dtype转换数据类型出现的问题:
Input: a1 = np.array([1,2,3], dtype = np.int32) print a1, a1.shape #其维数Output: [1 2 3] (3L,)Input: a1.dtype = np.int16 #强制转换了其类型 print a1, a1.shapeOutput: [1 0 2 0 3 0] (6L,) #维数变了Input: a1.dtype = np.float32 print a1, a1.shape #强制转换类型Output: [ 1.40129846e-45 2.80259693e-45 4.20389539e-45] (3L,) #数据出错
2、astype方法:转换数据类型,但在例子中我有一个疑问如下
Input: numeric_strings = np.array(['1.25', '-9.6', '42'], dtype=np.string_)Output: |S4
S作为字符串的缩写,我以为表示该数组为字符串,并且其长度为4,但通过len(numeric_strings)
发现其长度为3,并且其内没有换行符。之后查看string_的相关定义发现S4代表了数组内元素位字符串,并且其长度为4,换个例子,如下程序:
Input: numeric_strings = np.array(['1.25', '-9.6', '1.2345678'], dtype=np.string_) print numeric_strings.dtypeOutput: |S9
3、数组切片时,(3,)表示的是1行3列,1行是默认不写的,尤其是对于行向量和列向量而言,这个尤其重要,容易影响对于矩阵的判断。例如:
Input: aa2 = np.array([1,2,3]) print aa2.shapeOutput: (3L,)
4、布尔值可以用做数组的索引,但布尔值数组的长度必须和被索引的数组的轴长度(行数)一致,True时数组该行会输出,False时该行隐去。例如:输入names == 'Bob'
时,输出为[True, False, False, True, False, False]
,那么对于数组data而言,data[names == 'Bob']
将只会输出data[0]和data[2]
5、transpose方法
对于一般的低维度的数组,直接使用数组的T属性即可实现数组的转置,例如:
Input: arr = np.array([[1, 2, 3],[4, 5, 6]])Input: print arr.shapeInput: print arr.T.shapeOutput: (2, 3) (3, 2)
对于高维数组,书上这么说的‘’transpose需要得到一个由轴编号组成的元组才能对这些轴进行转置‘’,不太好理解,这里我们这样解释:对于一个高维数组X,首先看X的shape属性,返回一个元组(2, 2, 4),这个元组的索引默认为(0, 1, 2),即0对应2,1对应3, 2对应4,这个由X数组的shape属性的索引组成的元组才是transpose的真正意义。下面代码中transpose参数元组(1,0,2)可以理解为是索引组成的元组,1对应的还是3, 0对应的还是2, 2对应的还是4,通过索引的变化,数组X的shape属性为(3,2,4)。
没有进行transponse前,每个数组元素都有一个索引,例如13的索引为(1, 0, 1),按上面变化后,其索引变为(0, 1, 1)。
结论:transponse()改变的是X数组内元素的索引。
数学描述:若X数组的shape属性为(a,b,c),那么通过索引X[x, y, z]我们可以取到X内的任何元素,其中
按照上述数学描述,其程序如下:
Input: x = np.arange(-3,3) y = np.arange(-2,2) y1 = np.ones(np.shape(y)) y1T = y1.reshape(4,1) xs = y1T*x x1 = np.ones(np.shape(x)) yT = y.reshape(4,1) ys = yT*x1 print xs,'\n', ysOutput: [[-3. -2. -1. 0. 1. 2.] [-3. -2. -1. 0. 1. 2.] [-3. -2. -1. 0. 1. 2.] [-3. -2. -1. 0. 1. 2.]] # xs=[ones(size(y))]'*x [[-2. -2. -2. -2. -2. -2.] [-1. -1. -1. -1. -1. -1.] [ 0. 0. 0. 0. 0. 0.] [ 1. 1. 1. 1. 1. 1.]] # ys=y'*[ones(size(x))]
与meshgrid所得结果相同,并且meshgrid函数的本质即为将x,y向量拓展为多维矩阵。
- Python数据分析--Numpy部分笔记
- python数据分析---Numpy
- python 数据分析-numpy
- Python数据分析--pandas部分笔记
- Python数据分析笔记——Numpy、Pandas库
- Numpy入门——Python数据分析mooc笔记
- Python数据分析之NumPy(Mooc学习笔记1,ndarray)
- python数据分析学习笔记-Numpy-Matplotlib-Pandas
- 利用python进行数据分析学习笔记-Numpy篇
- 利用python进行数据分析学习笔记—Numpy基础知识
- 利用Python进行数据分析笔记-第四章Numpy
- python数据分析之Numpy
- python 数据分析 numpy基础
- 《Python数据分析与展示》学习笔记(一)numpy数据存储与函数
- 利用python进行数据分析-NumPy基础
- python数据分析 -- numpy库初识
- python数据分析之(2)numpy
- python数据分析numpy简单例子
- c++岗位面试总结(360)
- 增量更新热修复与插件化
- 关于梯度上升和梯度下降的理解
- 汇编与C之间的关系
- Matlab算累次积分的一个例子
- Python数据分析--Numpy部分笔记
- windows下安装Rabbitmq详解
- 玉蟾宫---悬线法之算法2
- 质数
- API Gateway
- android db 导入 手机 系统 目录 data/data/包名/databases
- 调unity webgl sendmessage
- web.xml中webAppRootKey
- 数据、数据元素、数据对象、数据结构的定义