numpy操作-2


前言


一、Numpy是什么?

Numpy(Numerical Python)是一个开源的Python科学计算库,它提供了一个强大的N维数组对象ndarray和用于操作这些数组的工具。

Numpy的核心功能包括:

1.Numpy提供了向量化操作,可以在单个操作中处理整个数组,而不是逐个元素处理,大大提高了计算效率‌,便捷的运算与多功能的函数

2.广播机制,可以对形状不同的数组进行相互操作

3.内存优化,Numpy的数组在内存中是连续存储的,这使得对数组的访问和操作非常高效。

4.多库兼容,许多其他重要的数据科学和机器学习库都依赖于它

二、关于numpy

先导入NumPy

在使用 NumPy 之前,需要先导入库,通常我们会将 NumPy 以 np 作为别名:

import numpy as np

1.数组的维度概念array

一维数组: 一维数组只有行

二维数组:二维数组既有行也有列

多维数组:

创建三维数组

np.array([[[1,2],[3,4]],
               [[5,6],[7,8]],
               [[9,10],[11,12]]])

注意:但是维度并不是意味着他有多少行或者是多少列,而是只你可以从几个方向上去看它

2.创建数组

a)使用 array() 创建数组

# 从Python列表创建数组

arr = np.array([1, 2, 3, 4])

arr = np.array(range(10))
print(arr)  

# 创建多维数组
 

arr_2d = np.array([[1, 2], [3, 4]])
print(arr_2d)  
b) 使用 arange() 和 linspace() 创建序列数组

np.arange(开始值,结束值,step步长)

不同参数个数情况介绍:

  • 一个参数时,参数值为终点值,起点取默认值0,步长取默认值1。
  • 两个参数时,第一个参数为起点值,第二个参数为终点,步长取默认值1。
  • 三个参数时,第一个参数为起点,第二个参数为终点,第三个参数为步长,其中步长支持小数。
# 创建一个等差序列数组
arr_range = np.arange(0, 10, 2)
print(arr_range)  # 输出:[0 2 4 6 8]

# 创建一个线性间隔数组
arr_linspace = np.linspace(0, 1, 5)
print(arr_linspace)  # 输出:[0.   0.25 0.5  0.75 1.  ]
c) 使用 zeros()ones() 和 full() 创建特定值数组

ones用法:

np.ones(shape,dtype=None,order='C')

参数说明:

shape:整数或者整型元组定义返回数组的形状;可以是一个数(创建一维向量),也可以是一个元组(创建多维向量)
eg: (3) 这就是一维。 (3,4)这就是3行4列的二维数组

dtype : 数据类型,可选定义返回数组的类型。eg: np.int64

order(内存布局): 这是一个较不常用的可选参数,用于指定数组在内存中的存储顺序。它可以是 'C'(行优先,即 C 风格)或 'F'(列优先,即 Fortran 风格)。

# 创建一个全为0的数组
zeros_arr = np.zeros((2, 3))
print(zeros_arr)  # 输出:[[0. 0. 0.] [0. 0. 0.]]

# 创建一个全为1的数组
ones_arr = np.ones((2, 3))
print(ones_arr)  # 输出:[[1. 1. 1.] [1. 1. 1.]]

# 创建一个指定数值的数组
full_arr = np.full((2, 2), 5)
print(full_arr)  # 输出:[[5 5] [5 5]]
 d)ones_like创建形状相同的数组

np.ones_like(a,dtype=float, order="c", subok=True)

a:参考对象即为参考数组

subok: 这是一个可选参数,默认为 False。一般用于带有掩码的数据

e)full创建指定值的数组

np.full(shape,fill_value,dtype=None,order='C')

fill_value:标量(就是纯数值变量)

f)full_like方法用于创建一个与给定数组形状(shape)和数据类型(dtype)相同的新数组。并用指定的填充值(fill_value)填充这个新数组。

 np.full_like(a,fill_value=123,dtype=None)

3. 数组属性

np.array对象具有多种属性,可以获取数组的信息:

ndim:查看数组轴的个数

shape:查看数组的形状

dtype:描述数组中元素的数据类型

size:查看数组元素的个数

arr = np.array([[1, 2, 3], [4, 5, 6]])

print(arr.shape)  # 数组的形状 (2, 3)
print(arr.size)   # 数组中的元素数量 6
print(arr.ndim)   # 数组的维度 2
print(arr.dtype)  # 数组元素的数据类型 int64
数组的形状操作
a) reshape() 改变数组形状

方法用于改变数组的形状(shape),而不改变其数据。这意味着你可以将数组重新排列成不同的维度,只要新形状的总元素数量与原始数组的总元素数量相同。一转多或者多转一。

两行三列数组转为三行两列数组:

arr = np.array([[1, 2, 3], [4, 5, 6]])
reshaped_arr = arr.reshape((3, 2))
print(reshaped_arr)
b)flatten展开数组

不需要知道有多少个数,程序会自动帮我们计算转换,按顺序展开,只能讲多维数组展开成一维数组

arr. flatten()

c) 数组转置

对上一步得到的二维数组进行转置。转置操作会交换数组的行和列,即原数组的第i行第j列元素会变成转置后数组的第j行第i列元素。

arr.T

arr.transpose()
swapaxes(1,0)

arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.T)
arr.transpose()
swapaxes(1,0)


总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

william_liu1

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

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

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

打赏作者

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

抵扣说明:

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

余额充值