python --数据可视化(二)

一、NumPy

1、简介:

 官网链接:http://www.numpy.org/

 NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库

2、基本功能:

  • 快速高效的多维数组对象ndarray
  • 用于对数组执行元素级计算以及直接对数组执行数学运算的函数
  • 用于读写硬盘上基于数组的数据集的工具
  • 线性代数运算、傅里叶变换,以及随机数生成
  • 用于将C、C++、Fortran代码集成到Python的工具
  • 除了为Python提供快速的数组处理能力,NumPy在数据分析方面还有另外一
  • 个主要作用,即作为在算法之间传递数据的容器。

3、NumPy的ndarray 创建ndarray

* 数组创建函数

 

demo:

import numpy

print('使用普通一维数组生成NumPy一维数组')
data = [6, 7.5, 8, 0, 1]
arr = numpy.array(data)
print(arr)
print(arr.dtype)


print('使用普通二维数组生成NumPy二维数组')
data = [[1, 2, 3, 4], [5, 6, 7, 8]]
arr = numpy.array(data)
print(arr)
print('打印数组维度')
print(arr.shape)

print('使用zeros/empty')
print(numpy.zeros(10)) # 生成包含10个0的一维数组
print(numpy.zeros((3, 6))) # 生成3*6的二维数组
print(numpy.empty((2, 3, 2))) # 生成2*3*2的三维数组,所有元素未初始化。
print

print('使用arrange生成连续元素')
print(numpy.arange(15))  # [0, 1, 2, ..., 14]

输出:

使用普通一维数组生成NumPy一维数组
[6.  7.5 8.  0.  1. ]
float64
使用普通二维数组生成NumPy二维数组
[[1 2 3 4]
 [5 6 7 8]]
打印数组维度
(2, 4)
使用zeros/empty
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[[0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0.]]
[[[8.82769181e+025 7.36662981e+228]
  [7.54894003e+252 2.95479883e+137]
  [1.42800637e+248 2.64686750e+180]]

 [[1.09936856e+248 6.99481925e+228]
  [7.54894003e+252 7.67109635e+170]
  [2.64686750e+180 5.63234836e-322]]]
使用arrange生成连续元素
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]
View Code

4、NumPy的ndarray NumPy数据类型

 

 

demo:

扫描二维码关注公众号,回复: 4243692 查看本文章
import numpy as np

print('生成数组时指定数据类型')
arr = np.array([1, 2, 3], dtype = np.float64)  # 生成ndarray数组,数据类型:float64
print(arr.dtype)
arr = np.array([1, 2, 3], dtype = np.int32)
print(arr.dtype)


print ('使用astype复制数组并转换数据类型')
int_arr = np.array([1, 2, 3, 4, 5])
float_arr = int_arr.astype(np.float)
print (int_arr.dtype)
print (float_arr.dtype)


print ('使用astype将float转换为int时小数部分被舍弃')
float_arr = np.array([3.7, -1.2, -2.6, 0.5, 12.9, 10.1])
int_arr = float_arr.astype(dtype = np.int)
print (int_arr)


print ('使用astype把字符串转换为数组,如果失败抛出异常。')
str_arr = np.array(['1.25', '-9.6', '42'], dtype = np.string_)
float_arr = str_arr.astype(dtype = np.float)
print (float_arr)


print ('astype使用其它数组的数据类型作为参数')
int_arr = np.arange(10)
float_arr = np.array([.23, 0.270, .357, 0.44, 0.5], dtype = np.float64)
print (int_arr.astype(float_arr.dtype))
print (int_arr[0], int_arr[1] ) # astype做了复制,数组本身不变。

 输出:

生成数组时指定数据类型
float64
int32
使用astype复制数组并转换数据类型
int32
float64
使用astype将float转换为int时小数部分被舍弃
[ 3 -1 -2  0 12 10]
使用astype把字符串转换为数组,如果失败抛出异常。
[ 1.25 -9.6  42.  ]
astype使用其它数组的数据类型作为参数
[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
0 1
View Code

 5、NumPy的ndarray 数组和标量之间的运算

  • 不用编写循环即可对数据执行批量运算
  • 大小相等的数组之间的任何算术运算都会将运算应用到元素级
  • 数组与标量的算术运算也会将那个标量值传播到各个元素

demo:

import numpy as np

# 数组乘法/减法,对应元素相乘/相减。
arr = np.array([[1.0, 2.0, 3.0], [4., 5., 6.]])
print (arr * arr)  # 不需要做循环,相当于对应元素进行平方处理
print (arr - arr)


# 标量操作作用在数组的每个元素上
arr = np.array([[1.0, 2.0, 3.0], [4., 5., 6.]])
print (1 / arr)
print (arr ** 0.5)  # 开根号

输出:

[[ 1.  4.  9.]
 [16. 25. 36.]]

[[0. 0. 0.]
 [0. 0. 0.]]

[[1.         0.5        0.33333333]
 [0.25       0.2        0.16666667]]

[[1.         1.41421356 1.73205081]
 [2.         2.23606798 2.44948974]]
View Code

猜你喜欢

转载自www.cnblogs.com/Eric15/p/10021362.html