Numpy初体验--第1关:Numpy创建数组

任务描述
本关的小目标是,使用 Numpy 创建一个多维数组。

相关知识
在 Python 中创建数组有许多的方法,这里我们使用 Numpy 中的arange方法快速的新建一个数组:

import numpy as np
a = np.arange(5)

其中import numpy as np是指引入Numpy这个库,并取别名为np。之所以取别名,是为了代码编写的方便。a=np.arange(5)是指将数值0 1 2 3 4赋值给a这个变量,这样我们就快速的创建了一个一维数组。

创建多维数组的方法是:

import numpy as np
b = np.array([np.arange(6),np.arange(6)])

这里,我们使用两个arange方法,创建了两个1x6的一维数组,然后使用numpy的array方法,将两个一维数组组合成一个2x6的二维数组。从而达到了创建多维数组的目的。

numpy创建的数组可以直接复制,具体代码示例如下:

import numpy as np
x = [y for y in range(6)]
b=np.array([x]*4)

编程要求
本关的任务是,补全右侧编辑器中 Begin-End 区间的代码,以实现创建一个m*n的多维数组的功能。具体要求如下:

函数接受两个参数,然后创建与之对应的的多维数组;

本关的测试样例参见下文。

本关设计的代码文件cnmda.py的代码框架如下:

# 引入numpy库
import numpy as np
# 定义cnmda函数
def cnmda(m,n):
    '''
    创建numpy数组
    参数:
         m:第一维的长度
         n: 第二维的长度
    返回值:
        ret: 一个numpy数组
    '''
    ret = 0
    
    # 请在此添加创建多维数组的代码并赋值给ret
    #********** Begin *********#
    #********** End **********#
    
    return ret

测试说明
本关的测试过程如下:

平台运行step1/cnmdatest.py文件,并以标准输入方式提供测试输入;

cnmdatest.py文件调用cnmda中的cnmda方法,平台获取cnmdatest.py的输出,然后将其与预期输出作对比,如果一致,则测试通过;否则测试失败。

以下是平台对step1/cnmdatest.py的测试样例:

测试输入: 5 8

预期输出: (5,8)

测试输入: 4 9

预期输出: (4,9)

开始你的任务吧,祝你成功!

答案如下

# 引入numpy库
import numpy as np
# 定义cnmda函数
def cnmda(m,n):
    '''
    创建numpy数组
    参数:
   		m:第一维的长度
   		n: 第二维的长度
    返回值:
    	ret: 一个numpy数组
    '''
    
	ret = 0
	
    # 请在此添加创建多维数组的代码并赋值给ret
	#********** Begin *********#
    ret = np.zeros((m, n))
	#********** End **********#
    
	return ret

### 如何使用 NumPy 创建数组 NumPy 是一种强大的 Python 库,用于处理多维数组和矩阵运算。以下是几种常见的创建 NumPy 数组的方式。 #### 使用 `np.arange` 方法 通过 `numpy.arange` 函数可以基于指定的范围生成一维数组。此函数类似于内置的 `range()` 函数,但它返回的是一个 NumPy 数组而不是列表。 ```python import numpy as np a = np.arange(5) # 创建从 0 到 4 的数组 print(a) # 输出: [0 1 2 3 4] ``` 这种方法简单高效,适用于定义连续整数序列的情况[^1]。 #### 使用 `np.fromiter` 方法 如果需要从可迭代对象(如生成器)中构建数组,则可以使用 `fromiter` 方法。该方法允许更灵活的数据输入方式并支持自定义数据类型。 ```python import numpy as np a = np.fromiter(range(5), dtype=int) # 将 range 对象转换成 ndarray print(a) # 输出: [0 1 2 3 4] ``` 这种方式特别适合于当原始数据源是一个大型迭代器而不想一次性加载到内存中的场景[^3]。 #### 复制现有结构来新建数组 除了上述两种基本形式外,还可以通过对已有列表或其他数组进行操作从而得到新的实例。下面展示了一个例子,其中先建立了一般意义上的Python list再转为其对应的ndarray版本: ```python import numpy as np x = [y for y in range(6)] # 原始list包含六个元素 b = np.array([x]*4) # 构造由四个相同子项组成的二维数组 print(b) """ [[0 1 2 3 4 5] [0 1 2 3 4 5] [0 1 2 3 4 5] [0 1 2 3 4 5]] """ ``` 这表明即使复杂的嵌套系也能够被良好地保留下来[^2]。 综上所述,根据实际需求可以选择不同的技术手段完成相应任务;无论是简单的线性分布还是复杂模式下的初始化过程都有相应的解决方案可供选用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值