Python数据分析numpy(1)

烂漫一生 提交于 2020-03-16 19:01:12

某厂面试归来,发现自己落伍了!>>>

Python开源的科学计算基础库

1.表示N维数组对象ndarray

2.线性代数、傅里叶变换、随机数生成

3.广播函数,整合c++、c

一.数据的维度

1.数据

2.数据维度

3.一维数据

(1)特点

(2)Python中的表达方式

列表、集合类型

(3)列表和数组的区别

数据类型要求不一样

4.二维数据

(1)概念,多个一位数据组成,一个以为数据的组合。

(2)列表

5.多维数据

(1)

(2)列表

6.高维数据

(1)仅利用最基本的二元关系展示数据间的复杂关系

(2)字典类型或者数据表示格式

 

二.numpy库中的N维数组对象ndarray

1.使用numpy数组原因:

(1)节省空间

(2)numpy的底层实现靠c语言实现的,提高运行速度。

代码示例:

2.N维数组对象-ndarray

(1)组成

实际的数据

描述这些数据的元数据(数据维度、数据类型等)

轴、秩

方法 功能
.ndim
.shape

.size

元素个数
.dtype 数据类型
.itemsize 元素所占的字节

import numpy as np
a=np.array([[0,1,2,3,4],[9,8,7,6,5]])# -*- coding: utf-8 -*-
print(a.ndim)
print(a.shape)
print(a.size)
print(a.dtype)
print(a.itemsize)

输出:

2
(2, 5)
10
int32
4

 

(2)要求所有的元素类型相同,数组下标从0开始。

(3)实例

(4)支持那么多数据类型原因

(5)不同质数据类型

()

3.ndarray数组的创建方法

(1)从Python的列表、元组等等类型创建ndarray数组

x=np.array(list/tuple),detype=数据类型)

不指定元素类型,根据读入的数据类型确定,根据最高级确定数据类型。

 

(2)使用numpy中函数创建ndarray数组,如arange,ones,Zeros等

最常用的方法

函数 作用 具体应用
np.arange(n) 类似range()函数,返回ndarray类型,元素从0到-1  
np.ones(shape) 根据shape生成一个全1数组,shape是元组类型 np.ones(2,3)
np.zeros(shape) 根据shape生成一个全0数组,shape是元组类型  
np.full(shape,val) 根据shape生成一个数组,每个元素值都是val  
np.eye(n) 创建一个证放的n*n单位矩阵,对角线为1,其余为0  

代码示例:

import numpy as np
#arange生成的为整数类型
print(np.arange(10))
#其他的都为浮点数类型
print(np.ones((3,6)))
print(np.zeros((3,6)))
print(np.eye(5))
输出:

[0 1 2 3 4 5 6 7 8 9]
[[1. 1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1. 1.]]
[[0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0.]]
[[1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]
生成多维数组

代码示例:

import numpy as np
x=np.ones((2,3,4))
print(x)
print(x.shape)#最外层到最内层元素变化的方式。

输出:

[[[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]

 [[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]]
(2, 3, 4)
 

 

 

(3)从字节流(raw bytes)中创建ndarray数组

(4)从文件读取特定格式,创建ndarray数组

(5)数据类型多为浮点数,符合现实计算的思维。

(6)ndarray数组的变换

astype:创建一个新的数组

(7)数组转换为Python中列表

3.ndarray数组的操作

(1)数组的索引和切片

索引:获取数组中特定元素位置的过程(找到元素在数组中的位置)。

切片:获取数组元素子集的过程(获得数组元素一部分)。

示例

一维数组索引:和Python列表中一样。

一维数组的切片:和Python列表切片一样。

多维数组的索引和切片首先要分辨出对象为几维的数组。

多维数组索引:a[1,2,3]表示的是:第一个维度的第二个轴的元素,第二个维度的第三个轴的元素,第三个维度的最后一个轴的第四个位置的元素。(由外而内的去寻找索引位置)

多维数组的切片:a[:,1:3,:],从外而内的寻找切片内容。

代码示例:

import numpy as np
a=np.array([[[1,2,3,4],[5,6,7,8],[9,10,11,12]],[[13,14,15,16],[17,18,19,20],[21,22,23,24]]])
print(a[1,2,3])
print(a[:,1:3,:])
print(a[:,:,::2])

输出:

24
[[[ 5  6  7  8]
  [ 9 10 11 12]]

 [[17 18 19 20]
  [21 22 23 24]]]
[[[ 1  3]
  [ 5  7]
  [ 9 11]]

 [[13 15]
  [17 19]
  [21 23]]]
可以对创建后的ndarray的维度和元素类型进行变换。
4.ndarray的运算

(1)数组与标量之间的运算

数组与标量之间的运算作用与数组的每一个元素。

代码示例:

 

(2)numpy中的一元函数,对数组的运算就是对数组中每一个元素的运算。

函数 作用
np.abs(x)  np.fabs(x) 计算数组各元素的绝对值
np.sqrt(x) 计算数组各元素的平方根
np.square(x) 计算数组各元素的平方
np.log(x) 、np.log10(x)、nplog2(x) 计算数组各元素的自然对数、10底数和2底对数
np.ceil(x)、np.floor(x) 计算数组各元素的ceiling值或floor值

代码示例:

import numpy as np
a=np.arange(24).reshape((2,3,4))
np.square(a)
print(a)
a=np.sqrt(a)
print(a)
a=np.modf(a)
print(a)

输出:

 

特点:进行一元函数操作后会生成一个新的数组,原来的数组没有被改变,想要改变原来的数组需要把改变后的值赋给旧的数组。

(3)numpy的二元函数,对两个数组运算的函数(其实是对两数组中的每个元素的运算)。

代码示例:

import numpy as np
a=np.arange(24).reshape((2,3,4))
b=np.square(a)
c=np.maximum(a,b)
print(c)
print(a>b)

输出:

[[[  0   1   4   9]
  [ 16  25  36  49]
  [ 64  81 100 121]]

 [[144 169 196 225]
  [256 289 324 361]
  [400 441 484 529]]]
[[[False False False False]
  [False False False False]
  [False False False False]]

 [[False False False False]
  [False False False False]
  [False False False False]]]
 


附件参考资料链接:http://www.cnblogs.com/WSX1994/articles/9061516.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!