JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

干货|一文掌握Numpy数组(numpy数组用法)

wys521 2024-11-16 01:46:09 精选教程 18 ℃ 0 评论

Numpy 数组对象是一种多维的、同质的、可变的数据容器,它可以存储具有相同数据类型的元素,并支持各种数学和逻辑运算。Numpy 数组对象有以下几个重要的属性:

  • shape:表示数组的形状,即每个维度的大小。例如,一个二维数组的 shape 可以是 (3, 4),表示有 3 行 4 列。
  • dtype:表示数组的数据类型,即每个元素的类型。例如,一个整数数组的 dtype 可以是 int32,表示 32 位整数。
  • ndim:表示数组的维度数,即有多少个轴。例如,一个二维数组的 ndim 是 2,一个一维数组的 ndim 是 。
  • size:表示数组的元素总数,即所有维度的大小之积。例如,一个 shape 为 (3, 4) 的数组的 size 是 。
  • itemsize:表示数组中每个元素所占的字节数。例如,一个 dtype 为 int32 的数组的 itemsize 是 。
  • data:表示数组中实际存储数据的缓冲区,一般不直接访问,而是通过索引或切片来获取元素。

以下是一些创建和操作 Numpy 数组对象的例子:

# 导入 numpy 模块
import numpy as np

# 创建一个一维数组
a = np.array([1, 2, 3, 4])
print(a) # 输出 [1 2 3 4]
print(a.shape) # 输出 (4,)
print(a.dtype) # 输出 int32
print(a.ndim) # 输出 1
print(a.size) # 输出 4
print(a.itemsize) # 输出 4

# 创建一个二维数组
b = np.array([[1, 2, 3], [4, 5, 6]])
print(b) # 输出 [[1 2 3] [4 5 6]]
print(b.shape) # 输出 (2, 3)
print(b.dtype) # 输出 int32
print(b.ndim) # 输出 2
print(b.size) # 输出 6
print(b.itemsize) # 输出 4

# 创建一个三维数组
c = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(c) # 输出 [[[1 2] [3 4]] [[5 6] [7 8]]]
print(c.shape) # 输出 (2, 2, 2)
print(c.dtype) # 输出 int32
print(c.ndim) # 输出 3
print(c.size) # 输出 8
print(c.itemsize) # 输出

# 创建一个指定形状和数据类型的空数组
d = np.empty((2, 3), dtype=float)
print(d) # 输出类似 [[0.00000000e+000 -1.49457995e-154 -1.49457995e-154] [0.00000000e+000 -1.49457995e-154 -1.49457995e-154]] 的随机值

# 创建一个指定形状和数据类型的全零数组
e = np.zeros((2, 3), dtype=int)
print(e) # 输出 [[0 0 0] [0 0 0]]

# 创建一个指定形状和数据类型的全一数组
f = np.ones((2, 3), dtype=bool)
print(f) # 输出 [[ True True True] [ True True True]]

# 创建一个指定范围和步长的等差序列数组
g = np.arange(0, 10, 2)
print(g) # 输出 [0,2,4,6,8]

# 创建一个指定范围和元素个数的等分序列数组
h = np.linspace(0,10,5)
print(h) # 输出 [0.   ,2.5 ,5.   ,7.5 ,10.]

# 创建一个指定范围和元素个数的等比序列数组
i = np.logspace(0,10,5)
print(i) # 输出 [1.e+00 ,3.16227766e+02 ,1.e+05 ,3.16227766e+07 ,1.e+10]

# 创建一个指定形状的随机数组
j = np.random.rand(2, 3)
print(j) # 输出类似 [[0.12345678 ,0.23456789 ,0.34567891] [0.45678912 ,0.56789123 ,0.67891234]] 的随机值

# 通过索引或切片获取或修改数组元素
k = np.array([[1, 2, 3], [4, 5, 6]])
print(k[0, 1]) # 输出 2
k[1, 2] = 7 # 修改元素
print(k) # 输出 [[1 2 3] [4 5 7]]
print(k[:, 1]) # 输出 [2 5]
print(k[0, :]) # 输出 [1 2 3]
print(k[0:2, 1:3]) # 输出 [[2 3] [5 7]]

# 使用布尔数组作为索引获取或修改数组元素
l = np.array([1, 2, 3, 4])
m = np.array([True, False, True, False])
print(l[m]) # 输出 [1 3]
l[m] = -1 # 修改元素
print(l) # 输出 [-1 ,2 ,-1 ,4]

# 使用花式索引获取或修改数组元素
n = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
o = np.array([0, 2])
p = np.array([1, 0])
print(n[o]) # 输出 [[1 ,2 ,3] [7 ,8 ,9]]
print(n[o,p]) # 输出 [2 ,7]
n[o,p] = -1 # 修改元素
print(n) # 输出 [[-1 ,2 ,3] [4 ,5 ,6] [7 ,-1 ,9]]

# 使用广播机制进行数组运算
q = np.array([1, 2, 3])
r = np.array([4, 5, 6])
s = q + r # 数组相加
print(s) # 输出 [5 ,7 ,9]
t = q * r # 数组相乘
print(t) # 输出 [4 ,10 ,18]
u = q ** r # 数组幂运算
print(u) # 输出 [   1   ,32   ,729]
v = np.array([[1], [2], [3]])
w = v + q # 数组广播相加
print(w) # 输出 [[2 ,3 ,4] [3 ,4 ,5] [4 ,5 ,6]]
x = v * q # 数组广播相乘
print(x) # 输出 [[1 ,2 ,3] [2 ,4 ,6] [3 ,6 ,9]]
y = v ** q # 数组广播幂运算
print(y) # 输出 [[1   ,1   ,1 ] [2   ,4   ,8 ] [3   ,9   ,27]]

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表