创建 NumPy 数组
使用 np.array、np.zeros、np.ones 和 np.arange 创建一维和二维数组,然后查看它们的形状和 dtype。
创建 NumPy 数组 是 CoddyKit 上的免费 Pandas & NumPy Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Pandas & NumPy Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Pandas & NumPy Academy 课程共包含 4 节课。
什么是 NumPy 数组
NumPy 是 Python 中用于数值计算的首选库。它的核心是 ndarray——由相同类型的值组成的网格,速度远快于列表,占用的内存也更少。
import numpy as np
# NumPy arrays are fast, typed, and memory-efficient
print(np.__version__)从列表创建数组
创建数组最简单的方法是:将列表传给 np.array()。NumPy 会自动为您选择 dtype,而由列表组成的列表会变成二维矩阵。
import numpy as np
a = np.array([1, 2, 3, 4, 5])
print(a) # [1 2 3 4 5]
print(a.dtype) # int64
m = np.array([[1, 2, 3], [4, 5, 6]])
print(m.shape) # (2, 3)np.zeros 和 np.ones
需要一个空白的起点吗?np.zeros 会用 0.0 填充数组,np.ones 则会用 1.0 填充——非常适合在计算实际值之前先设置数组。
import numpy as np
z = np.zeros(5)
print(z) # [0. 0. 0. 0. 0.]
o = np.ones((3, 4))
print(o.shape) # (3, 4)
print(o.dtype) # float64使用 np.arange 创建整数序列
np.arange 的工作方式类似于 Python 的 range,但返回的是数组。传入起始值、终止值和步长即可——终止值不会包含在内。
import numpy as np
a = np.arange(0, 10, 2)
print(a) # [0 2 4 6 8]
b = np.arange(1.0, 2.0, 0.25)
print(b) # [1. 1.25 1.5 1.75]使用 np.linspace 创建等间距浮点数
需要等间距的浮点数吗?np.linspace 会在两个端点之间生成指定数量的值,并包含两个端点,不会产生舍入误差累积。
import numpy as np
x = np.linspace(0, 1, 5)
print(x) # [0. 0.25 0.5 0.75 1. ]
y = np.linspace(0, 360, 7)
print(y) # [ 0. 60. 120. 180. 240. 300. 360.]np.full 和 np.eye
使用 np.full 可以用任意常量填充数组,使用 np.eye 可以构造单位矩阵——对角线上是 1,其余位置都是 0。
import numpy as np
f = np.full((2, 3), 7)
print(f)
# [[7 7 7]
# [7 7 7]]
I = np.eye(3)
print(I)
# [[1. 0. 0.]
# [0. 1. 0.]
# [0. 0. 1.]]创建时指定 dtype
每个数组的所有值都使用同一个 dtype。您可以通过 dtype= 自行设置,例如选择 float32 而不是 float64,能够将内存占用减少一半。
import numpy as np
a = np.array([1, 2, 3], dtype=np.float32)
print(a.dtype) # float32
print(a.nbytes) # 12 (3 elements x 4 bytes)
b = np.zeros(4, dtype=np.int32)
print(b.dtype) # int32使用 np.random 创建随机数组
需要随机数据吗?np.random 可以为您生成。先设置 seed,这样每次运行都会得到相同的数字——这对于可重复的实验非常重要。🎲
import numpy as np
np.random.seed(42)
u = np.random.rand(3, 3) # uniform [0, 1)
print(u)
n = np.random.randn(5) # standard normal
print(n.round(2))检查数组的形状和维度
创建数组后,您通常会检查它的 shape——它是一个元组,记录每个维度的大小。使用 .ndim 可以查看数组有多少个维度。
import numpy as np
a = np.arange(12)
print(a.shape) # (12,)
print(a.ndim) # 1
m = a.reshape(3, 4)
print(m.shape) # (3, 4)
print(m.ndim) # 2转换列表和元组
np.array() 接受的不只是列表——元组、范围,甚至其他数组都可以。只要避免使用不规则的 ragged 内部列表,因为它们会拖慢 NumPy 的速度。
import numpy as np
# From tuple
t = np.array((10, 20, 30))
print(t) # [10 20 30]
# From range
r = np.array(range(5))
print(r) # [0 1 2 3 4]
# Nested lists -> 2D
m = np.array([[1, 2], [3, 4], [5, 6]])
print(m.shape) # (3, 2)使用 np.empty 创建未初始化数组
np.empty 会分配内存但不进行填充,因此比 zeros 稍快一些。需要注意的是:其中会保留内存中的残留数据——务必先写入,再读取。
import numpy as np
buf = np.empty(5)
# Values are garbage — do NOT read before writing
for i in range(5):
buf[i] = i * 2
print(buf) # [0. 2. 4. 6. 8.]快速检查
检验您对本课数组创建内容的理解。
课程回顾
做得不错!您已经可以使用 np.array() 将列表转换为数组,也可以使用 zeros、ones、arange 和 linspace 从头创建数组。接下来学习数组属性。
常见问题解答
「创建 NumPy 数组」课时是免费的吗?
是的 — 「创建 NumPy 数组」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Pandas & NumPy Academy 课程的其余内容,请升级到 CoddyKit PRO。 Pandas & NumPy Academy 课程共包含 4 节课。
「创建 NumPy 数组」这节课中我会学到什么?
使用 np.array、np.zeros、np.ones 和 np.arange 创建一维和二维数组,然后查看它们的形状和 dtype。 你通过在浏览器中直接运行的动手代码来练习 Pandas & NumPy Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Pandas & NumPy Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Pandas & NumPy Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「创建 NumPy 数组」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Pandas & NumPy Academy 课中编写并运行代码吗?
能。每节 Pandas & NumPy Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。