数据分析---Python科学计算库-Numpy学习(一)

一,简介

1.1什么是数据分析

  1. 数据分析是指通过使用各种统计学、计算机科学和数学技术,对收集来的数据进行处理、整理、解释和呈现,从而提取出数据中有用的信息和洞察,并帮助做出更明智的决策。数据分析可以应用于各种不同的领域和行业,包括商业、科学、医疗保健、政府等。在数据分析中,人们可以利用不同的数据分析工具和技术,例如数据挖掘、机器学习、数据可视化等,以获得更深入的理解和知识。

1.2使用python做数据分析常用的库

  1. numpy:基础数值算法
  2. scipy:科学计算
  3. matplotlib:数据可视化
  4. pandas:序列高级函数

1.3什么是Numpy库:Numerical Python

  1. NumPy是一个Python库,用于科学计算和数值计算。它为Python提供了一个强大的多维数组对象和一系列的函数,用于处理这些数组。NumPy是科学计算领域中最为常用的Python库之一,因为它可以让开发者高效地处理数值数据,包括线性代数、傅里叶变换和随机数生成等操作

1.4为什么使用Numpy库

对于同样的数值计算任务,使用Numpy比直接编写python代码实现的优点:

  1. 代码简洁:Numpy直接以数组,矩阵作为粒度今次那个计算并支持大量的数字函数,而python需要for循环从底层实现。
  2. 性能更高效:Numpy的数组存储效率和输入输出计算性能,比Python使用List或者嵌套List好很多。因为Numpy的数据存储与Python原生List不同,Numpy的大部分代码都是C语言实现的,这也是Numpy比python代码高效的原因。

1.5Numpy安装

  1. 在pycharm中打开终端,由于我安装的python的3.X,使用命令安装numpy:pip3 install numpy
    在这里插入图片描述
  2. 检查是否安装好:`python -c “import numpy; print(numpy.version)”
    在这里插入图片描述

二,Numpy数组

2.1ndarray数组

  1. ndarray 是一个用于多维数组对象的 NumPy 库的核心数据类型。它是一个具有相同数据类型元素的固定大小数组,而且所有元素都在连续的内存块中存储
  2. ndarray 对象的重要属性包括:
    (1)shape: 数组的维度,例如,一个 n 行 m 列的数组,它的 shape 属性将是 (n, m)。
    (2)dtype: 数组中元素的数据类型,例如,int32, float64 等。
    (3)ndim: 数组的维度数,例如,一个二维数组的 ndim 是 2。
  3. ndarray 对象可以通过很多方式创建,包括:
    (1)从 Python 列表或元组转换。
    (2)使用 NumPy 的函数,例如,numpy.zeros() 或 numpy.ones()。
    (3)从文件中读取数据。
  4. 以下是一个使用 NumPy 创建 ndarray 的示例:
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a)
print(a.shape)
print(a.dtype)
print(a.ndim)

在这里插入图片描述
5. 简单数组计算实现:

import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])
a.shape=(2,3)#将一维数组改成二行三列
print(a*3)#数组运算,所有元素乘3
print(a)
print(a>3)#判断所有元素是否大于3
print(a+a)#两个数组对应位置元素相加,必须保证维度一样
# print(a.shape)
# print(a.dtype)
# print(a.ndim)

在这里插入图片描述

2.2ndnarray底层存储原理

(1)在 NumPy 中,ndarray 的底层存储是连续的一段内存空间。该内存空间中保存的是多维数组中的元素。对于一维数组,元素按照顺序存储在连续的内存空间中;对于二维数组,元素也是按照行优先顺序存储的,即第一行的元素存储在内存的前面,第二行的元素紧随其后,以此类推;对于高维数组,元素的存储方式也是按照行优先的方式进行的。

(2)NumPy 中的 ndarray 还包含了元素的数据类型以及数组的形状等信息。因此,在对 ndarray 进行切片、索引等操作时,NumPy 会通过计算偏移量和步长等信息,直接访问对应的内存位置,从而实现高效的数组操作。

(3)由于 ndarray 底层存储是连续的一段内存空间,因此在对数组进行大量计算时,可以利用现代处理器的缓存机制,提高计算效率。此外,ndarray 的内存管理也比较灵活,可以通过设置数组的 strides、dtype 等属性,实现对数组的内存分配和释放等操作。

2.2.1内存中的ndarray对象

  1. 元数据(metadata):存储对目标数组的描述信息:dim count,dtype,data等。
  2. 实际数据:完整的数组数据,将实际数据与元数据分开存放,一方面提高了内存空间的使用效率,另一方面减少对实际数据的访问频率,访问元数据,对元数据进行操作,提高性能。
    在这里插入图片描述
  3. ndarray数组对象的特点:
    (1)Numpy数组是同质数组:即所有元素的数据类型一致。
    (2)Nump数组的下标从0开始,最后一个元素的下标为数组长度减一。

2.3ndarray数组对象的创建

(1)正常方式创建:

import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])

(2)通过arang()方法:

array1=np.arange(1,9,2)
print(array1)

在这里插入图片描述
参数信息:
在这里插入图片描述
(3)创建全为零的数组

array2=np.zeros(10,dtype='int32')
print(array2)

在这里插入图片描述

(4)#创建全为一数组

array3=np.ones(shape=(3,2),dtype='float32')
print(array3)

在这里插入图片描述

2.4ndarray属性的基本操作

  1. NumPy中的ndarray是一个多维数组对象,具有许多有用的属性和方法,以下是一些常见的属性操作示例:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.shape) # 输出 (2, 3)
arr.shape = (3, 2)
print(arr) # 输出 [[1 2]
           #      [3 4]
           #      [5 6]]
  1. 数据类型操作:
import numpy as np
arr = np.array([1, 2, 3])
print(arr.dtype) # 输出 int64
arr = np.array([1.0, 2.0, 3.0])

print(arr.dtype) # 输出 float64
arr = np.array(['a', 'b', 'c'])
print(arr.dtype) # 输出 <U1

注意:想要获得一个与arry数组数据一样但数据类型不一样的数组,不可以直接将arry的数据类型进行改变,容易出错,正确的做法是使用astype()方法,创建一个新数组。

import numpy as np
arr = np.array([1, 2, 3])
arry2=arry.astype('float32')
  1. 维度操作:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.ndim) # 输出 2
arr = np.array([1, 2, 3])
print(arr.ndim) # 输出 1
  1. 元素数量操作:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.size) # 输出 6
arr = np.array([1, 2, 3])
print(arr.size) # 输出 3
  1. 数据存储类型操作:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.itemsize) # 输出 8
arr = np.array([1, 2, 3])
print(arr.itemsize) # 输出 8

2.5对ndarray数组进行索引切片

2.5.1通过索引访问数组元素

(1)可以使用方括号[]和索引值来访问数组中的单个元素,例如:

import numpy as np

# 创建一个3行3列的数组
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 访问第2行第3列的元素
print(a[1, 2])  # 输出:6

2.5.2通过切片访问数组子集

(1)使用冒号:分隔符可以创建切片对象,它可以用于访问数组的子集。切片对象包括start:stop:step,其中start是开始索引值,stop是结束索引值,step是步长。

# 创建一个3行3列的数组
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 访问第2行的所有元素
print(a[1, :])  # 输出:[4 5 6]

# 访问第2列的所有元素
print(a[:, 1])  # 输出:[2 5 8]

# 访问第2行到第3行,第1列到第2列的所有元素
print(a[1:3, 0:2])  # 输出:[[4 5] [7 8]]

需要注意的是,使用切片返回的是一个新的ndarray数组,而不是原数组的视图。因此,对切片返回的数组进行修改不会影响原数组的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泰勒今天想展开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值