Python学习笔记

前言

Python numpy库㈡学习通道


一、核心对象:ndarray

numpy库提供了一种重要的数据结构----n维数组(ndarray,又可表示为array),它是一种由同质元素组成的多维数组,元素数量是事先指定好的。同质指的是所有元素的类型必须是相同的,可以通过数组的dtype属性获得元素的类型,每个ndarray有且只有一种dtype类型。

①基本概念

①轴(axes):ndarray中的数组维度称为轴。

在这里插入图片描述

②秩(rank):秩是数组的维度,通过数组的ndim属性可以获取数组的维度。

③大小(size):数组的元素个数。

④形状(shape):数组的形状。

⑤类型(dtype):数组中的元素的类型。

⑥元素大小(itemsize):数组中的元素占用的字节数。

在这里插入图片描述

②numpy.array()函数

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

在这里插入图片描述

import numpy as np 
a = np.array([1,2,3])  
print (a)
#[1,2,3]
b = np.array([[1,  2],  [3,  4]])  
print (b)
#[[1  2] 
# [3  4]]
c= np.array([1, 2, 3, 4, 5], ndmin =  2)  #最小维度 
print (c)
#[[1 2 3 4 5]]
d = np.array([1,  2,  3], dtype = complex)  
print (d)
#[1.+0.j 2.+0.j 3.+0.j]

③代码示例

这里演示用的是jupyter lab!!!

import numpy as np
array=np.array([1,2,3])
type(array)  #numpy.ndarray
array.ndim #通过数组的ndim属性获得秩的大小
array.shape #通过数组的shape属性获得数组的形状,返回类型会元祖
array.size #通过数组的size属性获得数组的元素个数
array.dtype #通过数组的dtype属性获得数组的元素类型
array.itemsize #通过数组的itemsize属性获得元素占用的字节数

#(1, (3,), 3, dtype('int32'), 4)
barray = np.array([[1,2,3],[4,5,6]])  #创建二维数组
barray.ndim,barray.shape,barray.size,barray.dtype,barray.itemsize
#(2, (2, 3), 6, dtype('int32'), 4)
carray = np.array([[1,2,3],[4,5,6]],dtype=np.int64) #指定类型
carray.dtype #dtype('int64')

二、创建数组的常用方法

①arange()函数

arange 函数创建数值范围并返回 ndarray 对象,arange()函数支持浮点数。

numpy.arange(start, stop, step, dtype)

在这里插入图片描述

import numpy as np
array1 = np.arange(10.0)
array1
#array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])

②linspace()函数

linspace()函数用来创建一个一维数组,数组是一个等差数列构成的。

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

在这里插入图片描述

array2=np.linspace(1,10,4)
array2
#array([ 1.,  4.,  7., 10.])

③ones()函数

ones()函数用来创建全1数组。

np.ones(shape, dtype = None)

在这里插入图片描述

array3 = np.ones(5)
array3
#array([1., 1., 1., 1., 1.])
array4 = np.ones((2,3))
array4
#array([[1., 1., 1.],
#       [1., 1., 1.]])

④zeros()函数

zeros()函数用来创建全0数组。

np.zeros(shape, dtype = float) 默认为浮点数

在这里插入图片描述

array5 = np.zeros((2,3))
array5
#array([[0., 0., 0.],
#       [0., 0., 0.]])

⑤full()函数

full()函数用来创建每个元素都是fill_value的数组。

np.full(shape,fill_value) 默认为浮点数

np.full((3,4),5)
#array([[5, 5, 5, 5],
#       [5, 5, 5, 5],
 #      [5, 5, 5, 5]])

⑥eye()函数

eye()函数用来创建N行、M列的单位数组。M省略时,创建N行、N列的单位数组。(对角线)

np.eye(N,M=None,k=0,dtype=float)

在这里插入图片描述

array6 = np.eye(3,5,dtype=int)
array6

输出:
array([[1, 0, 0, 0, 0],
[0, 1, 0, 0, 0],
[0, 0, 1, 0, 0]])

⑦random.rand()函数

random.rand()函数用来创建n维数组,元素为0~1之间的随机小数。

np.random.rand(d0,d1,…,dn)

在这里插入图片描述

array7 = np.random.rand(3,4)
array7

输出:
array([[0.83132134, 0.68714066, 0.55562658, 0.5718338 ],
[0.33911374, 0.81359073, 0.22370062, 0.13292187],
[0.27651819, 0.08026213, 0.71122275, 0.93317912]])


三、ndarray的数据类型

在这里插入图片描述


四、数组的基本运算

假设有4个人共同参加一个测试,每个人分别做两次,两次测试成绩分别为99,98,80,60和80,75,65,80,请计算每个人两次测试的总分。

#方法1:利用列表存储4个人一次测试的成绩
test1 = [99,98,80,60]
test2 = [80,75,65,80]
tsum = []
for i in range(4):
    tsum.append(test1[i]+test2[i])
print(tsum) #[179, 173, 145, 140]
#方法2:利用numpy一维数组来存储4个人一次测试的成绩
tarray1 = np.array([99,98,80,60])
tarray2 = np.array([80,75,65,80])
tsum1 = tarray1 +tarray2
print(tsum1)
#[179 173 145 140]

①数组之间的运算

Array1 = Array2 = np.ones((2,3),dtype=int)
Array1+Array2
#array([[2, 2, 2],
#       [2, 2, 2]])
Array1-Array2
#array([[0, 0, 0],
#       [0, 0, 0]])
Array1 * Array2
#array([[1, 1, 1],
#       [1, 1, 1]])
Array1/Array2
#array([[1., 1., 1.],
#       [1., 1., 1.]])
import numpy as np
Array3 = np.ones((2,3),dtype=int)
Array3
#array([[1, 1, 1],
#       [1, 1, 1]])
Array4 = np.arange(3)
Array4
#array([0, 1, 2])
Array3 + Array4
#array([[1, 2, 3],
#       [1, 2, 3]])
Array3+Array4 >2 #数组进行关系运算,返回一个布尔型数组
#array([[False, False,  True],
#       [False, False,  True]])
Array3 < Array4
#array([[False, False,  True],
#       [False, False,  True]])

②数组和普通值的运算

import numpy as np
Array3 = np.ones((2,3),dtype=int)
Array3
#array([[1, 1, 1],
#       [1, 1, 1]])
Array3+1
#array([[2, 2, 2],
#       [2, 2, 2]])
Array3 *5
#array([[5, 5, 5],
#       [5, 5, 5]])

  • 15
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值