0Pricing
Pandas & NumPy Academy · 课时

创建 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 创建 NumPy 数组
  2. 数组属性与检查
  3. 逐元素算术运算
  4. 数组切片与索引
← 返回 Pandas & NumPy Academy