NumPy基本数据结构

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

一、NumPy是什么?

        NumPy 是用于 Python 中科学计算的一个基础包。它提供了一个多维度的数组对象,以及针对数组对象的各种快速操作,例如排序、变换,选择等操作

二、使用步骤

1.安装部署

Conda 安装:

conda install numpy

pip 安装:

pip install numpy

2.NumPy数组

        在 NumPy 中,数组是由 numpy.ndarray 类来实现的,它是 NumPy 的核心数据结构。

2.1创建数组

         最简单的方法就是把一个列表传入到 np.array() 或 np.asarray() 中,这个列表可以是任意维度的。np.array() 属于深拷贝,np.asarray() 则是浅拷贝。

import  numpy as np
#创建一个一维数组
arr_1_d = np.asarray([1])
print(arr_1_d)  #[1]
#创建一个二维数组
arr_2_d = np.asarray([[1, 2], [3, 4]])
print(arr_2_d) #[[1 2] 
               # [3 4]]

2.2数组的属性

 ndim

 ndim表示数组维度(轴)的个数

import  numpy as np
#创建一个一维数组
arr_1_d = np.asarray([1])

#创建一个二维数组
arr_2_d = np.asarray([[1, 2], [3, 4]])

print(arr_1_d.ndim) #1
print(arr_2_d.ndim) #2

shape

shape 表示数组的维度或形状, 是一个整数的元组,元组的长度等于 ndim。

import  numpy as np
#创建一个一维数组
arr_1_d = np.asarray([1])

#创建一个二维数组
arr_2_d = np.asarray([[1, 2], [3, 4]])

print(arr_1_d.shape) #(1,)
print(arr_2_d.shape) #(2, 2)

 reshape() 函数

在不改变数组元素内容的情况下变换数组的形状。但是你需要注意的是,变换前与变换后数组的元素个数需要是一样的。

import  numpy as np
#创建一个一维数组
arr_1_d = np.asarray([1])
print(arr_1_d)  #[1]
#创建一个二维数组
arr_2_d = np.asarray([[1, 2], [3, 4]])
print(arr_2_d) #[[1 2]
                #[3 4]]
print(arr_2_d.reshape((1,4))) #[[1 2 3 4]]
print(arr_2_d.reshape((1,5))) #ValueError: cannot reshape array of size 4 into shape (1,5)

        还可以使用 np.reshape(a, newshape, order) 对数组 a 进行 reshape,新的形状在 newshape 中指定。这里需要注意的是,reshape 函数有个 order 参数,它是指以什么样的顺序读写元素,其中有这样几个参数。

        ‘C’:默认参数,使用类似 C-like 语言(行优先)中的索引方式进行读写。

        ‘F’:使用类似 Fortran-like 语言(列优先)中的索引方式进行读写。

        ‘A’:原数组如果是按照‘C’的方式存储数组,则用‘C’的索引对数组进行 reshape,否则使用’F’的索引方式。 

a = np.arange(6).reshape(2,3,order='C')
print(a) #[[0 1 2]
         # [3 4 5]]

b = np.arange(6).reshape(2,3,order='F')
print(b) #[[0 2 4]
          #[1 3 5]]

size

        size也就是数组元素的总数,它就等于 shape 属性中元素的乘积

import  numpy as np
arr_2_d = np.asarray([[1, 2], [3, 4]])
print(arr_2_d.size) #4

dtype

        dtype数组元素的类型,当创建时不指定类型NumPy 会自动进行判断,然后给一个默认的数据类型

import  numpy as np
#创建时不指定类型
arr_2_d = np.asarray([[1, 2], [3, 4]])
print(arr_2_d.dtype) #int32
#创建时指定类型
arr_3_d = np.asarray([[1, 2], [3, 4]],dtype=float)
print(arr_3_d.dtype) #float64

        数组的数据类型当然也可以改变,我们可以使用 astype() 改变数组的数据类型,不过改变数据类型会创建一个新的数组,而不是改变原数组的数据类型。 

import  numpy as np


arr_d = np.asarray([[1, 2], [3, 4]],dtype=float)
print(arr_d.dtype) #float64
arr_temp = arr_d.astype('int32')
print(arr_d.dtype)#float64
print(arr_temp.dtype)#int32

 np.ones() 与 np.zeros()

        np.ones() 用来创建一个全 1 的数组,np.zeros()用来创建一个全0 的数组,必须参数是指定数组的形状,可选参数是数组的数据类型。        

import  numpy as np
np.ones()
#Traceback (most recent call last):
#  File "E:\PythonProject\tensorflowdaletouyuce-master\lotto-master\Test.py", line 4, in <module>
#    np.ones()
#TypeError: ones() missing 1 required positional argument: 'shape'
# 报错原因是没有给定形状的参数
print(np.ones(shape=(2,3)))  #[[1. 1. 1.]
                              #[1. 1. 1.]]
print(np.ones(shape=(2,3), dtype='int32')) #[[1 1 1]
                                            #[1 1 1]]

np.arange() 

        可以使用 np.arange([start, ]stop, [step, ]dtype=None) 创建一个在[start, stop) 区间的数组

                start:可选参数,默认为 0。

                stop:必须参数,区间的终点,请注意,刚才说的区间是一个左闭右开区间,所以数组并不包含 stop。

                step:可选参数,默认是 1。
             

import  numpy as np


# 创建从0到4的数组
print(np.arange(5)) #[0 1 2 3 4]

# 从2开始到4的数组
print(np.arange(2,5))#[2 3 4]

# 从2开始,到8的数组,跨度是3
print(np.arange(2,9,3)) #[2 5 8]

np.linspace() 

        可以用 np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)创建一个数组,具体就是创建一个从开始数值到结束数值的等差数列。

                start:必须参数,序列的起始值。

                stop:必须参数,序列的终点。

                num:序列中元素的个数,默认是 50。

                endpoint:默认为 True,如果为 True,则数组最后一个元素是 stop。

                retstep:默认为 False,如果为 True,则返回数组与公差。

import  numpy as np


# 创建从1到5的有3个元素的等差数列且不包含Stop点
print(np.linspace(1,5,3,False)) #[1.         2.33333333 3.66666667]
# 创建从1到5的有3个元素的等差数列且包含Stop点
print(np.linspace(1,5,3,True)) #[1. 3. 5.]

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
实验报告: 一、实验目的和要求 本次实验的主题为“Numpy数值计算”,旨在让我们掌握Numpy基本数据结构Numpy数组的创建和基础运算,以及Numpy数组的统计分析方法。具体要求如下: 1、了解Numpy基本数据结构,包括数组、矩阵等。 2、学会使用Numpy创建数组,并掌握数组的索引、切片、重塑等操作。 3、学会使用Numpy进行数组的基本运算,如加、减、乘、除等。 4、学会使用Numpy进行数组的统计分析,包括最大值、最小值、平均值、方差等。 二、实验过程 1、创建数组 我们首先需要了解Numpy基本数据结构——数组。数组可以看作是一种有序的元素集合,每个元素都有一个数字索引。Numpy提供了多种创建数组的方式,如下所示: import numpy as np # 从列表创建一维数组 a = np.array([1, 2, 3, 4, 5]) print(a) # 从列表创建二维数组 b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print(b) # 创建全零数组 c = np.zeros((3, 3)) print(c) # 创建全一数组 d = np.ones((4, 4)) print(d) # 创建随机数数组 e = np.random.rand(3, 3) print(e) 2、数组的索引、切片和重塑 与Python中的列表类似,Numpy数组也支持索引、切片和重塑等操作。如下所示: # 数组索引 print(a[2]) print(b[1][2]) # 数组切片 print(a[1:4]) print(b[1:, 1:]) # 数组重塑 f = np.arange(12).reshape(3, 4) print(f) 3、数组的基本运算 Numpy支持数组的基本运算,如加、减、乘、除等。如下所示: # 数组加法 g = np.array([[1, 2], [3, 4]]) h = np.array([[5, 6], [7, 8]]) print(g + h) # 数组减法 print(g - h) # 数组乘法 print(g * h) # 数组除法 print(g / h) 4、数组的统计分析 Numpy提供了多种数组的统计分析方法,如最大值、最小值、平均值、方差等。如下所示: # 数组最大值 print(np.max(g)) # 数组最小值 print(np.min(g)) # 数组平均值 print(np.mean(g)) # 数组方差 print(np.var(g)) 三、实验结果 经过以上实验,我们成功地掌握了Numpy基本数据结构、数组的创建和基础运算,以及数组的统计分析方法。我们可以使用Numpy进行更为高效和准确的数值计算,并且可以快速地进行数据可视化和分析。 四、实验总结 本次实验让我们深入了解了Numpy的数值计算和数据分析功能,掌握了创建数组、数组的索引、切片和重塑、数组的基本运算和统计分析等技能。在日后的学习和应用中,我们将更加熟练地使用Numpy进行数据处理和分析,并且可以更好地应对各种数据分析任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

夏铁锤砸羊排

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

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

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

打赏作者

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

抵扣说明:

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

余额充值