2、NumPy数组基本用法

(1)Numpy是Python科学计算库,用于快速处理任意维度的数组。
(2)NumPy提供一个N维数组类型ndarray,它描述了相同类型的“items”的集合。
(3)numpy.ndarray支持向量化运算。
(4)NumPy使用c语言写的,底部解除了GIL,其对数组的操作速度不在受python解释器限制。

1、numpy中的数组:

Numpy中的数组的使用跟Python中的列表非常类似。他们之间的区别如下:

(1)一个列表中可以存储多种数据类型,比如a = [1,‘a’]是允许的。而数组只能存储同种数据类型
(2)数组可以是多维的,当多维数组中所有的数据都是数值类型的时候,相当于线性代数中的矩阵,是可以进行相互间的运算的。

2、创建数组(np.ndarray对象):

Numpy经常和数组打交道,因此首先第一步是要学会创建数组。在Numpy中的数组的数据类型叫做ndarray。以下是两种创建的方式:
1、根据python中的列表生成,注意生成的数组各元素之间没有逗号,列表和张量子之间有逗号。

import numpy as np
a1 = np.array([1, 2, 3, 4])
print(a1)   #结果为:[1 2 3 4]
print(type(a1)) #结果为:<class 'numpy.ndarray'>

2、使用np.arange生成,其中np.arange的用法类似于Python中的range:

import numpy as np
a2 = np.arange(2, 21, 2) #start:stop:step
print(a2) #结果为:[ 2  4  6  8 10 12 14 16 18 20]

3、使用np.random生成随机数的数组:

a4 = np.random.randint(0, 10, size=(3, 3)) #元素是从0-10之间随机的3行3列的数组
print(a4)
#结果为:[[5 6 7]
          [1 7 5]
          [0 5 0]]

4、使用函数生成特殊的数组:

a1 = np.zeros((2,2)) #生成一个所有元素都是0的2行2列的数组
print(a1)
# [[0. 0.]
#  [0. 0.]]
a2 = np.ones((3,2)) #生成一个所有元素都是1的3行2列的数组
print(a2)
# [[1. 1.]
#  [1. 1.]
#  [1. 1.]]
a3 = np.full((2,2),8) #生成一个所有元素都是8的2行2列的数组
print(a3)
# [[8 8]
#  [8 8]]
a4 = np.eye(3) #生成一个在斜方形上元素为1,其他元素都为0的3x3的矩阵
print(a4)
# [[1. 0. 0.]
#  [0. 1. 0.]
#  [0. 0. 1.]]

3、ndarray常用属性:

3.1 ndarray.dtype:获取数组中数据的数据类型

因为数组中只能存储同一种数据类型,因此可以通过.dtype获取数组中的元素的数据类型.
在这里插入图片描述

Numpy中关于数值的类型比Python内置的多得多,这是因为Numpy为了能高效处理海量数据而设计的。举个例子,比如现在想要存储上百亿的数字,并且这些数字都不超过254(一个字节内),我们就可以将dtype设置为int8,这样就比默认使用int64更能节省内存空间了。
1、默认的数据类型:

import numpy as np
a1 = np.array([1,2,3])
print(a1) #结果为:[1 2 3]
print(a1.dtype) #结果为:int32
# 如果是windows系统,默认是int32

2、指定dtype:(dtype= )

import numpy as np
a1 = np.array([1,2,3],dtype=np.int64)
# 或者 a1 = np.array([1,2,3],dtype="i8")
print(a1.dtype) #结果为:int64

3、修改dtype:通过.astype()方法实现

import numpy as np
a1 = np.array([1,2,3])
print(a1.dtype) # window系统下默认是int32,结果为:int32
# 以下修改dtype
a2 = a1.astype(np.int64) # astype不会修改数组本身,而是会将修改后的结果返回
print(a2.dtype)#结果为:int64

3.2 ndarray.size:获取数组中总的元素的个数。

比如有个二维数组:

import numpy as np
a1 = np.array([[1,2,3],[4,5,6]])
print(a1.size) #打印的是6,因为总共有6个元素

3.3 ndarray.ndim:数组的维数。

比如:

a1 = np.array([1,2,3])
print(a1.ndim) # 维度为1
a2 = np.array([[1,2,3],[4,5,6]])
print(a2.ndim) # 维度为2
a3 = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
print(a3.ndim) # 维度为3

3.4 ndarray.shape:数组的维度的元组。

比如以下代码

a1 = np.array([1,2,3])
print(a1.shape) # 输出(3,),意思是一维数组,有3个数据

a2 = np.array([[1,2,3],[4,5,6]])
print(a2.shape) # 输出(2,3),意思是二维数组,2行3列

a3 = np.array([
    [
        [1,2,3],
        [4,5,6]
    ],
    [
        [7,8,9],
        [10,11,12]
    ]
 ])
print(a3.shape) # 输出(2,2,3),意思是三维数组,总共有2个元素,每个元素是2行3列的

a4 = np.array([1,2,3],[4,5])
print(a4.shape) # 输出(2,),意思是a4是一个一维数组,总共有2列
print(a4) # 输出[list([1, 2, 3]) list([4, 5])],其中最外面层是数组,里面是Python列表

另外,还可以通过ndarray.reshape来重新修改数组的维数。示例代码如下:

a1 = np.arange(12) #生成一个有12个数据的一维数组
print(a1)#结果为:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] 

a2 = a1.reshape((3,4)) #变成一个2维数组,是3行4列的
print(a2)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]
a3 = a1.reshape((2,3,2)) #变成一个3维数组,总共有2块,每一块是3行2列的
print(a3)
# [[[ 0  1]
#   [ 2  3]
#   [ 4  5]]
#
#  [[ 6  7]
#   [ 8  9]
#   [10 11]]]
a4 = a2.reshape((12,)) # 将a2的二维数组重新变成一个12列的1维数组
print(a4)  #[ 0  1  2  3  4  5  6  7  8  9 10 11]

a5 = a2.flatten() # 不管a2是几维数组,都将他变成一个一维数组,拉平
print(a5)  #[ 0  1  2  3  4  5  6  7  8  9 10 11]

注意:reshape并不会修改原来数组本身,而是会将修改后的结果返回。如果想要直接修改数组本身,那么可以使用resize来替代reshape。

3.4 ndarray.itemsize:数组中每个元素占的大小,单位是字节。

比如以下代码:

import numpy as np
a1 = np.array([1,2,3],dtype=np.int32)
print(a1.itemsize) # 打印4,因为每个字节是8位,32位/8=4个字节
  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NumPy(Numerical Python)是Python中用于科学计算的重要库,提供了高性能的多维数组对象和数学函数。NumPy数组是这个库的核心数据结构,它是一个由相同类型的元素组成的多维网格。 下面是NumPy数组的一些重要用法和示例代码: 1. 创建数组 ```python import numpy as np # 创建一维数组 arr1 = np.array([1, 2, 3, 4, 5]) print(arr1) # 创建二维数组 arr2 = np.array([[1, 2, 3], [4, 5, 6]]) print(arr2) # 创建全零数组 zeros_arr = np.zeros((2, 3)) print(zeros_arr) # 创建全一数组 ones_arr = np.ones((3, 2)) print(ones_arr) # 创建指定范围内的等差数组 range_arr = np.arange(0, 10, 2) print(range_arr) ``` 2. 数组操作 ```python import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) # 获取数组形状 shape = arr.shape print(shape) # 获取数组维度 dim = arr.ndim print(dim) # 获取数组元素类型 dtype = arr.dtype print(dtype) # 访问数组元素 element = arr[0, 1] print(element) # 切片操作 sliced_arr = arr[:, :2] print(sliced_arr) # 数组转置 transposed_arr = arr.T print(transposed_arr) ``` 3. 数组运算 ```python import numpy as np arr1 = np.array([1, 2, 3]) arr2 = np.array([4, 5, 6]) # 数组加法 addition = arr1 + arr2 print(addition) # 数组乘法 multiplication = arr1 * arr2 print(multiplication) # 数组平方 squared_arr = arr1 ** 2 print(squared_arr) # 数组平均值 average = np.mean(arr1) print(average) # 数组最大值和最小值 maximum = np.max(arr1) minimum = np.min(arr1) print(maximum, minimum) ``` 以上只是NumPy数组的一些重要用法,还有很多其他操作和函数可以用于数组的变换、统计、线性代数等。NumPy的文档提供了更详细的信息和示例代码,可以进一步学习和了解。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值