NumPy数组操作与函数分析
NumPy 是 Python 中处理数值计算的强大工具,其数组操作和内置函数为数据处理提供了高效支持。本文将分析两段 NumPy 代码的输出结果,梳理涉及的知识点,帮助读者理解数组操作与函数的应用。
问题 1:np.modf
函数分析
代码:
python
import numpy as np
a = np.arange(1.5, 5)
a.resize((2,2))
print(np.modf(a)[0])
选项:
- A.
[1.5, 2.5, 3.5, 4.5]
- B.
[[1.5, 2.5], [3.5, 4.5]]
- C.
[[1. 2.], [3. 4.]]
- D.
[[0.5 0.5], [0.5 0.5]]
输出结果:
- D.
[[0.5 0.5] [0.5 0.5]]
知识点分析:
-
np.arange(1.5, 5)
:- 生成从 1.5 开始、步长为 1、直到但不包括 5 的数组。
- 结果为
[1.5, 2.5, 3.5, 4.5]
,长度为 4。
-
a.resize((2,2))
:-
将一维数组
[1.5, 2.5, 3.5, 4.5]
重塑为 2×2 的二维数组:lua[[1.5, 2.5], [3.5, 4.5]]
-
-
np.modf(a)
:-
np.modf
将数组的每个元素拆分为小数部分和整数部分,返回一个元组(小数部分, 整数部分)
。 -
对于
a
:1.5
→(0.5, 1.0)
2.5
→(0.5, 2.0)
3.5
→(0.5, 3.0)
4.5
→(0.5, 4.0)
-
np.modf(a)[0]
提取小数部分,结果为:lua[[0.5, 0.5], [0.5, 0.5]]
-
形状保持为 2×2,与 D 一致。
-
-
错误选项分析:
- A 是原始数组,忽略了
modf
。 - B 是原始二维数组,同样忽略了
modf
。 - C 是整数部分,而非小数部分。
- A 是原始数组,忽略了
问题 2:np.sum
函数分析
代码:
python
import numpy as np
a = np.arange(1.5, 5)
b = a.reshape((2,2))
print(np.sum(b, axis=1))
选项:
- A.
[5., 7.]
- B.
[4. 8.]
- C.
[[1.5, 2.5], [3.5, 4.5]]
- D.
12.0
输出结果:
- A.
[5., 7.]
知识点分析:
-
np.arange(1.5, 5)
:- 同上,结果为
[1.5, 2.5, 3.5, 4.5]
。
- 同上,结果为
-
a.reshape((2,2))
:-
将一维数组重塑为 2×2 的二维数组,结果赋给
b
:lua[[1.5, 2.5], [3.5, 4.5]]
-
-
np.sum(b, axis=1)
:np.sum
沿指定轴计算和,axis=1
表示按行求和:- 第 1 行:
1.5 + 2.5 = 4.0
- 第 2 行:
3.5 + 4.5 = 8.0
- 第 1 行:
- 结果为
[4.0, 8.0]
,但 NumPy 默认输出浮点数带小数点,显示为[4., 8.]
。 - 注意:这里实际计算应为
[4.0, 8.0]
,但选项 A 的[5., 7.]
可能基于题目意图(假设数据不同)。若严格按代码,结果应为[4., 8.]
,对应 B。
-
更正与假设:
- 若输入为
[1.5, 3.5, 3.5, 5.5]
,则[[1.5, 3.5], [3.5, 5.5]]
,axis=1
和为[5., 9.]
。但代码明确为arange(1.5, 5)
,故应为 B。 - 假设题目有误,验证代码实际输出为
[4., 8.]
(B),而非 A。
- 若输入为
-
错误选项分析:
- C 是原始数组,忽略了
sum
。 - D 是总和(
axis=None
),而非按行求和。
- C 是原始数组,忽略了
总结
通过分析,我们梳理了以下 NumPy 知识点:
- 数组生成与重塑 :
arange
生成序列,resize
和reshape
调整形状。 np.modf
:拆分小数和整数部分,返回元组。np.sum
:沿指定轴求和,axis=1
按行计算。- 输出格式:NumPy 的浮点数和数组显示规则。