一维数组、行向量、列向量的区别

本文通过实例介绍了如何使用numpy库在Python中生成一维数组、列向量和行向量,并解释了它们之间的区别,这对于构建神经网络时避免常见错误至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意三者的区别,在构建神经网络时候可以避免错误
import numpy as np
C = np.random.randn(5)  #产生随机的一维数组
print(C)
'''
out:
[ -5.65042297e-01  -5.48341047e-01   4.15160628e-04  -3.24193205e-02
  -3.01925976e-01]
'''
D = np.random.randn(5,1) #产生的5行1列的列向量
print(D)
'''
output:
[[ 0.30360266]
 [ 0.03575066]
 [-0.7923111 ]
 [ 0.25596523]
 [-0.46919003]]
'''
G = np.random.randn(1,5) #产生的1行5列的行向量
print(G)
'''
output:
[[ 2.93917097  1.19041539 -0.65461783  0.3956      1.47609237]]
'''
<think>我们需要一个函数,输入是一个二维数组(矩阵),输出是一个行向量,每个元素是对应列的。在MATLAB中,可以直接使用sum函数,并指定维度为1(按列求,结果保持行向量)或省略(默认按列求,但注意如果输入是行向量则返回标量,不过题目要求输入是数组,按列求)。但是,为了确保按列求并返回行向量,我们指定维度为1。函数定义:function colSums =columnSum(matrix)colSums =sum(matrix,1);%按列求,返回行向量注意:如果输入是空矩阵,sum函数会按列求返回空行向量(与输入列数相同,但行数为0的矩阵求后是1x0的空行向量),符合要求。但是,题目没有特别说明输入维度,我们假设输入至少是二维数组?但实际函数应该能够处理向量情况。对于行向量(1×n矩阵),按列求(dim=1)会返回它本身(因为每一列只有一个元素)。对于列向量(n×1矩阵),按列求(dim=1)会返回一个标量(等于该列向量所有元素),但标量在MATLAB中也是1×1的行向量,所以符合要求。因此,我们可以这样写:</think>以下是实现按列求的 MATLAB 函数: ```matlab function rowVector = columnSum(matrix) % COLUMNSUM 计算矩阵的列并返回行向量 % rowVector = columnSum(matrix) 对输入矩阵的每一列求 % 结果返回一个包含各列总行向量 % 使用sum函数按列求(dim=1表示沿行方向求) rowVector = sum(matrix, 1); end ``` ### 关键解释: 1. **`sum(matrix, 1)` 的作用**: - 第二个参数 `1` 指定沿第一个维度(行方向)求 - 对每列中的所有元素求,结果缩减为单行 - 示例: ```matlab >> A = [1 2 3; 4 5 6] >> columnSum(A) % 返回 [5 7 9] ``` 2. **输入输出处理**: - 支持任意二维矩阵(包括行/列向量) - 空矩阵处理:`sum([],1)` 返回空行向量 `1×0` - 单列矩阵:返回包含单个元素的行向量 - 单行矩阵:直接返回输入本身(行向量) ### 测试用例: ```matlab % 常规矩阵 A = [1 2 3; 4 5 6]; disp(columnSum(A)); % 输出 [5, 7, 9] % 单列矩阵 B = [10; 20; 30]; disp(columnSum(B)); % 输出 [60] % 行向量 C = [7 8 9 10]; disp(columnSum(C)); % 输出 [7 8 9 10] % 空矩阵 D = []; disp(columnSum(D)); % 输出 [] ``` ### 注意事项: - 输入必须是数值矩阵(`double`, `single`, `int` 等) - 若需处理非数值数据(如 `cell` 数组),需额外添加类型转换 - 结果数据类型与输入保持一致(整数求保持整数,浮点数保持浮点)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值