利用Python进行数据分析(1)—— Numpy Basic(1)
2017-08-08 01:32
991 查看
Jupyter Notebook Viewer
The NumPy ndarray: a multidimensional array object
import numpy as np ''' precision 浮点数输出精度位数(默认值8位) suppress 是否 禁止 使用 科学记数法(默认为False)打印小浮点值 ''' np.set_printoptions(precision=4, suppress=True) ''' numpy.random.randn(d0, d1, …, dn)是从标准正态分布中返回一个或多个样本值。 numpy.random.rand(d0, d1, …, dn)的随机样本位于[0, 1)中。 ''' data_1 = np.random.randn(2, 3) print(data_1) # data_2 = np.random.rand(2, 3) # # print(data_2) print(data_1*10) print(data_1+data_1) # 数组 形状 print('数组 形状:', data_1.shape) # 数组 中 数据 的 类型 print('数组 中 数据 的 类型:', data_1.dtype) # 数组 的 维度 print('数组 的 维度:', data_1.ndim) # --------------------------------------
[[ 1.0104 -0.4554 -0.2024] [ 0.5217 1.1163 1.4374]] [[ 10.1039 -4.554 -2.0242] [ 5.2174 11.1635 14.3736]] [[ 2.0208 -0.9108 -0.4048] [ 1.0435 2.2327 2.8747]] 数组 形状: (2, 3) 数组 中 数据 的 类型: float64 数组 的 维度: 2 Process finished with exit code 0
Creating ndarrays
# 将 data1 转换为 1*4 的数组 data1 = [6, 7.5, 8, 0, 1] arr1 = np.array(data1) print(arr1) # 将 data2 转换为 2*4 的数组 data2 = [[1, 2, 3, 4], [5, 6, 7, 8]] arr2 = np.array(data2) print(arr2) # np.array 函数可以自动推断出 dtype,也可以指定 dtype print(arr1.dtype, arr2.dtype) # 10*1 的 0矩阵(10行 1列) print(np.zeros((10, 1))) # 1*10 的 0矩阵(1行 10列) print(np.zeros((1, 10))) # 3*6 的单位矩阵 print(np.ones((3, 6))) # 创建一个与 arr2 形状相同的 单位矩阵 print(np.ones_like(arr2)) # 很多情况下, np.empty 返回的是 垃圾值 print(np.empty((2, 3, 2))) # 功能类似 Python 内置的 range,但 返回的不是 list 是 ndarray print(np.arange(15))
[ 6. 7.5 8. 0. 1. ] [[1 2 3 4] [5 6 7 8]] float64 int32 [[ 0.] [ 0.] [ 0.] [ 0.] [ 0.] [ 0.] [ 0.] [ 0.] [ 0.] [ 0.]] [[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]] [[ 1. 1. 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.3061e-295 7.3666e+228] [ 7.5489e+252 2.9548e+137] [ 1.4280e+248 2.6469e+180]] [[ 1.0994e+248 6.9948e+228] [ 7.5489e+252 7.6711e+170] [ 2.6469e+180 5.6323e-322]]] [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14] Process finished with exit code 0
Data Types for ndarrays
# 创建 数组 时,指定 数组中 数据 的 类型 arr1 = np.array([1, 2, 3], dtype=np.float64) arr2 = np.array([1, 2, 3], dtype=np.int32) print(arr1.dtype) print(arr2.dtype) # 当创建 数组 时,未指定 数据 的类型,则由 numpy 自己推断 arr = np.array([1, 2, 3, 4, 5]) print(arr.dtype) # 通过 ndarray.astype(np.dytype) 可以修改 数组 的 数据类型 float_arr = arr.astype(np.float64) print(float_arr.dtype) # 修改 数组 数据类型 arr = np.array([3.7, -1.2, -2.6, 0.5, 12.9, 10.1]) print(arr) print(arr.astype(np.int32)) # 将 数据类型 从 np.string_ 转换为 np.float64 numeric_strings = np.array(['1.25', '-9.6', '42'], dtype=np.string_) print(numeric_strings.astype(float)) # 数据类型 int_array = np.arange(10) print(int_array.dtype) calibers = np.array([.22, .270, .357, .380, .44, .50], dtype=np.float64) print(int_array.astype(calibers.dtype).dtype) print(int_array.dtype) # 简写形式 empty_uint32 = np.empty(8, dtype='u4') print(empty_uint32.dtype) # 注意:ndarray.astype ,无论如何都会创建出一个新的数组 # ------------------------------------------------
float64 int32 int32 float64 [ 3.7 -1.2 -2.6 0.5 12.9 10.1] [ 3 -1 -2 0 12 10] [ 1.25 -9.6 42. ] int32 float64 int32 uint32 Process finished with exit code 0
Operations between arrays and scalars
''' 大小相等 的 数组 之间的 任何 【算术运算】 都会将 运算 应用到 【元素级别】 数组 与 标量 之间的 【算术运算】 也会将 标量值 传播到 【各个元素】 ''' arr = np.array([[1., 2., 3.], [4., 5., 6.]]) print(arr) print(arr * arr) print(arr - arr) print(1 / arr) print(arr ** 0.5) # 矩阵 点乘 2*3 · 3*2 = 2*2 print(np.dot(arr, arr.T))
[[ 1. 2. 3.] [ 4. 5. 6.]] [[ 1. 4. 9.] [ 16. 25. 36.]] [[ 0. 0. 0.] [ 0. 0. 0.]] [[ 1. 0.5 0.3333] [ 0.25 0.2 0.1667]] [[ 1. 1.4142 1.7321] [ 2. 2.2361 2.4495]] [[ 14. 32.] [ 32. 77.]] Process finished with exit code 0
Basic indexing and slicing
arr = np.arange(10) print(arr) print(arr[5]) print(arr[5:8]) # 将 arr 数组 索引 从 5 到 7 的元素替换为 12 arr[5:8] = 12 # 数组切片是原始数组的视图,数据【不会被复制】,视图上的任何修改都会【直接反映】 到 【原始数组】 print(arr) arr_slice = arr[5:8] # arr 数组中,索引为 6 的元素被替换为 12345 arr_slice[1] = 12345 print(arr) # arr 数组中,索引为 5,6,7 的元素被替换为 64 arr_slice[:] = 64 print(arr) # 如果想要得到的是 ndarray 切片的一份副本而非视图的话,就需要显示的复制操作 copy_slice = arr[5:8].copy() print(copy_slice) copy_slice[:] = 6 print(copy_slice) # 此时 arr 数组 未被修改 print(arr)
[0 1 2 3 4 5 6 7 8 9] 5 [5 6 7] [ 0 1 2 3 4 12 12 12 8 9] [ 0 1 2 3 4 12 12345 12 8 9] [ 0 1 2 3 4 64 64 64 8 9] [64 64 64] [6 6 6] [ 0 1 2 3 4 64 64 64 8 9] Process finished with exit code 0
# 在二维数组中,各索引位置上的元素不再是标量,而是一维数组 arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) pprint(arr2d) # arr2d 数组 的 索引为 2 的 行 print(arr2d[2]) # arr2d 数组 的 一行 和 二行 print(arr2d[:2]) # arr2d 数组 第 0 行,第 2 列 的元素 print(arr2d[0][2]) print(arr2d[0, 2]) arr3d = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]) pprint(arr3d) print(arr3d[0]) # 4 print(arr3d[0][1][0]) old_values = arr3d[0].copy() arr3d[0] = 42 pprint(arr3d) arr3d[0] = old_values pprint(arr3d) print(arr3d[1, 0]) # ----------------------------------------------------------
array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) [7 8 9] [[1 2 3] [4 5 6]] 3 3 array([[[ 1, 2, 3], [ 4, 5, 6]], [[ 7, 8, 9], [10, 11, 12]]]) [[1 2 3] [4 5 6]] 4 array([[[42, 42, 42], [42, 42, 42]], [[ 7, 8, 9], [10, 11, 12]]]) array([[[ 1, 2, 3], [ 4, 5, 6]], [[ 7, 8, 9], [10, 11, 12]]]) [7 8 9] Process finished with exit code 0
Indexing with slices
arr = np.array([[1., 2., 3.], [4., 5., 6.]]) arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) pprint(arr2d) print(arr[1:6]) print(arr2d[:2]) # 0,1 行 和 1,2 列 取交集 print(arr2d[:2, 1:]) # 1 行 的 0,1 列 print(arr2d[1, :2]) print(arr2d[2, :1]) # 第 0 列 print(arr2d[:, :1]) # 修改 数值 arr2d[:2, 1:] = 0 print(arr2d) # --------------------------------
array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) [[ 4. 5. 6.]] [[1 2 3] [4 5 6]] [[2 3] [5 6]] [4 5] [7] [[1] [4] [7]] [[1 0 0] [4 0 0] [7 8 9]] Process finished with exit code 0
相关文章推荐
- 利用Python进行数据分析(2)—— Numpy Basic(2)
- 利用Python进行数据分析(3)—— Numpy Basic(3)
- 利用Python进行数据分析-环境搭建
- 利用Python进行数据分析系列之——数据格式转换
- Python数据挖掘:利用聚类算法进行航空公司客户价值分析
- 《利用Python 进行数据分析》 - 笔记(5)
- 利用python进行数据分析-绘图和可视化1
- 利用Python进行数据分析(六)之pandas基本功能
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍
- 利用Python进行数据分析(八)
- 笔记 利用python进行数据分析
- 利用python进行数据分析-数据加载、存储与文件格式2
- 利用Python进行数据分析(6) NumPy基础: 矢量计算
- 利用Python进行数据分析 2017 第二版 项目代码
- 利用Python进行数据分析——数据规整化:清理、转换、合并、重塑(七)(1)
- 读《利用 Python 进行数据分析》pdf
- 利用python进行数据分析读书笔记
- 利用Python进行数据分析(15) pandas基础: 字符串操作
- 利用 Python 进行数据分析(十二)pandas:数据合并
- 利用Python进行数据分析(三)