使用Numpy模块实现数组的形状改变

本文详细介绍了如何使用NumPy库中的数组进行形状变换,包括直接修改shape属性和使用reshape方法创建新数组。此外,还讲解了两种常用的数组展平方法:ravel()和flatten(),并演示了如何按行或按列展平高维数组。

目录

1.直接改变 通过 shape 直接指定形状 ----  元组

2.通过reshape 更改 --- 返回一个新的数组

3.将高纬度数组展平

(1)通过ravel()展平

(2)通过flatten()展平


创建一个数组

import numpy as np
arr=np.arange(16)
print('arr:',arr)
print('arr形状:',arr.shape)
print(type(arr))

1.直接改变 通过 shape 直接指定形状 ----  元组

arr.shape(4,4)
print(arr)
print(arr.shape)

2.通过reshape 更改 --- 返回一个新的数组

arr_new=arr.reshape(4,4)
print(arr_new)
print(arr_new.shape)

3.将高纬度数组展平

创建一个高纬度数组

import numpy as np
arr=np.arange(16).reshape(4,4)
print(arr)
print(arr.shape)

(1)通过ravel()展平

arr_new=arr.ravel()
# arr_new=np.ravel(arr)
print(arr_new)

(2)通过flatten()展平

默认参数是C 按行展开

参数是F 按列展开

arr_new=arr.flatten()
print('arr_new:',arr_new)
arr_new=arr.flatten('F')
print('arr_new:',arr_new)

 

<think> 我们被要求回答关于使用numpy生成随机数组的方法。 根据提供的引用,我们可以总结如下: 引用[1]提到: - 使用numpy.random模块生成随机数组。 - np.random.rand:生成[0.0, 1.0)之间的随机浮点数。如果没有参数,则返回一个随机浮点数;如果有一个参数(整数型),则返回一维数组;多个参数则返回对应维度的数组。 引用[2]提到: - numpy.random模块有很多方法:rand, uniform, choice, randn, normal, randint, random等。 - numpy.random.rand(d0, d1, …, dn) 生成指定维度的数组数组元素在[0,1)区间均匀分布。 引用[3]给出一个例子: - 使用np.random.rand(3,4,5)生成一个3*4*5的数组,并展示了数组的属性(维度个数、形状、数据类型)。 除此之外,我们还可以补充一些常见的生成随机数组的方法(即使引用中没有提到,但根据我们的知识,这些方法是常用的): - np.random.random: 类似于rand,但是参数使用元组形式指定形状,如np.random.random((2,3))。 - np.random.randn: 生成标准正态分布(均值为0,标准差为1)的随机数。 - np.random.normal: 生成正态分布(可指定均值和标准差)的随机数。 - np.random.randint: 生成随机整数。 - np.random.uniform: 生成均匀分布的随机数(可以指定范围)。 注意:在numpy的较新版本(1.17之后)中,推荐使用Generator对象(通过np.random.default_rng()创建)来生成随机数,这样方法更丰富且更符合现代实践。但考虑到引用中提供的方法都是传统方法,我们同时介绍传统方法和新方法。 然而,由于用户问题中并没有指定numpy版本,我们以传统方法为主,并简要提及新方法。 因此,我们可以组织回答如下: 1. 首先介绍np.random.rand 2. 介绍其他常用方法:randn, randint, uniform, normal, random等 3. 简要提及新版本中的Generator 注意:我们引用的内容来自站内引用,所以在适当位置添加引用标识。 另外,根据系统级指令,我们需要在回答末尾生成相关问题。 我们尽量使用中文回答,结构清晰。 </think> ### NumPy生成随机数组的方法总结 NumPy提供了多种生成随机数组的方法,主要通过`numpy.random`模块实现。以下是常用方法总结: #### 1. **均匀分布随机数** - `np.random.rand(d0, d1, ..., dn)` 生成$[0.0, 1.0)$区间的均匀分布浮点数数组,维度由参数指定: ```python import numpy as np arr1d = np.random.rand(5) # 一维数组(5个元素) arr3d = np.random.rand(2,3,4) # 三维数组(2×3×4)[^3] ``` - `np.random.random(size)` 功能类似`rand`,但参数为元组形式: ```python arr2d = np.random.random((3,4)) # 3行4列的二维数组 ``` #### 2. **整数随机数** - `np.random.randint(low, high, size)` 生成$[low, high)$区间的随机整数: ```python int_arr = np.random.randint(1, 100, (5,5)) # 5×5矩阵,元素∈[1,100) ``` #### 3. **正态分布随机数** - `np.random.randn(d0, d1, ..., dn)` 生成标准正态分布(均值0,标准差1): ```python norm_arr = np.random.randn(100) # 100个标准正态分布值[^2] ``` - `np.random.normal(loc, scale, size)` 自定义正态分布(均值`loc`,标准差`scale`): ```python custom_norm = np.random.normal(10, 2, (3,3)) # 均值10,标准差2 ``` #### 4. **其他分布** - `np.random.uniform(low, high, size)` 自定义均匀分布区间$[low, high)$: ```python uniform_arr = np.random.uniform(-5, 5, 10) # [-5,5)区间的10个值[^2] ``` - `np.random.choice(a, size)` 从给定数组`a`中随机抽取: ```python choice_arr = np.random.choice([0.2, 0.4, 0.6], 5) # 从指定值中随机选5个[^2] ``` #### 5. **数组属性操作** 生成后可查看数组属性: ```python arr = np.random.rand(3,4) print("维度数:", arr.ndim) # 输出: 2 print("形状:", arr.shape) # 输出: (3,4) print("数据类型:", arr.dtype) # 输出: float64[^3] ``` --- ### 注意事项 1. **随机种子** 使用`np.random.seed(数值)`可复现随机结果: ```python np.random.seed(42) # 固定随机序列 ``` 2. **新版本推荐** NumPy1.17建议使用`Generator`对象: ```python rng = np.random.default_rng() arr = rng.uniform(0,1,(5,5)) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值