【NumPy数组(ndarray)属性及其基本操作】

什么是NumPy数组(ndarray)?

NumPy数组,简称ndarray,是NumPy库的核心数据结构。它是一个多维数组对象,用于存储同类型的数据,可以是整数、浮点数、复数等。ndarray的属性和方法使得在数据处理和数学计算中变得非常便捷。

ndarray的属性

1. 形状(shape)

ndarray的shape属性返回一个元组,描述了数组的维度。例如,一个形状为(3, 4)的ndarray表示它是一个3行4列的二维数组。

import numpy as np

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

print(arr.shape)  # 输出 (3, 4)

2. 数据类型(dtype)

dtype属性返回数组中元素的数据类型。NumPy支持多种数据类型,包括整数、浮点数、复数等。你可以使用dtype来了解数组中元素的数据类型。

import numpy as np

arr = np.array([1, 2, 3, 4])
print(arr.dtype)  # 输出 int64

arr = np.array([1.0, 2.5, 3.7])
print(arr.dtype)  # 输出 float64

3. 维度(ndim)

ndim属性返回数组的维度数目,即数组的秩(rank)。例如,一个一维数组的秩为1,二维数组的秩为2,以此类推。

import numpy as np

arr = np.array([1, 2, 3, 4])
print(arr.ndim)  # 输出 1

arr = np.array([[1, 2, 3, 4],
                [5, 6, 7, 8]])
print(arr.ndim)  # 输出 2

4. 元素个数(size)

size属性返回数组中元素的总个数,即数组的大小。

import numpy as np

arr = np.array([[1, 2, 3, 4],
                [5, 6, 7, 8]])
print(arr.size)  # 输出 8

5. 元素访问

通过索引访问ndarray中的元素。可以使用不同的索引方式来访问单个元素、切片、以及多维数组中的元素。

import numpy as np

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

# 访问单个元素
print(arr[0, 0])  # 输出 1

# 切片
print(arr[:, 1])  # 输出 [2 5 8]

# 多维数组访问
print(arr[1:3, 1:3])
# 输出:
# [[5 6]
#  [8 9]]

Numpy 基本矩阵操作

1. 创建矩阵

import numpy as np

# 创建一维数组
a = np.array([1, 2, 3, 4])

# 创建二维数组
b = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])

2. 获取矩阵的形状和数据类型

import numpy as np

a = np.arange(1, 11)
print("数组大小:", a.shape)
print("数组类型:", a.dtype)

3. 矩阵运算

import numpy as np

a = np.array([1, 2, 3, 4])
b = np.array([5, 6, 7, 8])

print("a+b=", a + b)
print("a-b=", a - b)
print("a*b=", a * b)
print("a/b=", a / b)
print("a的平方=", np.power(a, 2))

4. 索引和切片

import numpy as np

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

print("a的第一个元素为:", a[0])
print("a的前三个元素为:", a[:3])

5. 维度转换

import numpy as np

a = np.arange(1, 13)

print("a的原始形状为:", a.shape)
# 利用 reshape 函数将 a 重构为 3 行 4 列的数组
b = np.reshape(a, (3, 4))
print("b的形状为:", b.shape)
print(b)

# 利用 flatten 函数将 b 降为 1 维
c = b.flatten()
print("c的形状为:", c.shape)
print(c)

Numpy 处理缺失值

import numpy as np

data = np.array([[1, np.nan, 3],
                 [4, 5, 6],
                 [7, np.nan, 9]])

# 计算每行的均值
row_means = np.nanmean(data, axis=1)

# 找出为 NaN 的元素
nan_indices = np.isnan(data)

# 根据均值替换 NaN 值
row_indices, col_indices = np.where(nan_indices)
data[row_indices, col_indices] = row_means[row_indices]

print(data)

在上述例子中,我们使用了 np.nanmean 函数计算每行的均值,np.isnan 函数找出为 NaN 的元素,并使用 np.where 函数获取这些元素的索引。然后,根据均值替换 NaN 值,从而处理了缺失值的情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

武帝为此

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

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

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

打赏作者

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

抵扣说明:

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

余额充值