numpy 第四课--拼接

# -*- coding:utf-8 -*-
import numpy as np

t1 = np.arange(6).reshape(2, 3)
t2 = np.arange(10, 16).reshape(2, 3)
# 竖直拼接,vertically 相当于union all
# print(np.vstack((t1, t2)))
# 水平拼接 horizontally
# print(np.hstack((t1, t2)))
print("*" * 10)
# 构建全为0的数组
z = np.zeros((t1.shape[0], 1), dtype="int")
t1 = np.hstack((z, t1))
# 构建全为1的数组
o = np.ones((t2.shape[0], 1)).astype(np.int)
t2 = np.hstack((o, t2))

print(np.vstack((t1, t2)))

print("*" * 50)
t1[0, 0] = 7
t1[0, 2] = 6
print(t1)
# 第一列最大值是7,返回位置0
# 第二列最大值是3,返回位置1....其余同理
print(np.argmax(t1, axis=0))  # [0 1 0 1]
print(np.argmax(t1))  # 返回一维数组中最大值的位置

print("*" * 50)
# 常用判断
print(np.nan == np.nan)  # False
print(np.inf == np.inf)  # True
t1 = t1.astype("float")
t1[1, 1] = np.nan
t1[1, 2] = np.inf
print(t1)
# 获取非0个数,包括nan,inf
print(np.count_nonzero(t1))

# 获取nan个数 方法1
print(np.count_nonzero(t1 != t1))
# 获取nan个数 方法2
print(np.count_nonzero(np.isnan(t1)))

# 求和 有nan的话返回nan,有inf的话返回inf
print(np.sum(t1))
t1[1, 1] = 3
print(t1)
print(np.sum(t1))  # info
print(np.sum(t1, axis=0))  # [ 7.  3. inf  7.]
print(np.max(t1, axis=0))
# 极值=最大值-最小值
print(np.ptp(t1, axis=0))

t1 = np.arange(10).reshape((2, 5)).astype(np.float)
print(t1)
t2 = t1[:, 1]
# 注意:此处修改的t2,会影响t1
t2[1] = -1
print(t1)

 

### 使用 NumPy 进行数组的水平拼接 NumPy 提供了多种方法来执行数组的水平拼接操作。常用的方法有 `np.hstack()` 和 `np.concatenate()` 函数。 #### 方法一:使用 `np.hstack` `np.hstack` 是一种用于沿第二个轴(即列方向)堆叠数组序列的方式。这意味着它会将多个数组按列连接在一起形成一个新的更大的数组[^1]。 ```python import numpy as np # 创建两个示例矩阵 matrix_a = np.array([[1, 2], [3, 4]]) matrix_b = np.array([[5, 6]]) # 水平拼接这两个矩阵 result_matrix = np.hstack((matrix_a, matrix_b.T)) print(result_matrix) ``` 需要注意的是,在此例子中为了使 `matrix_b` 的形状匹配 `matrix_a`,对其进行了转置处理 (`matrix_b.T`) 将其由 (1,2) 转化为 (2,1),从而能够成功地与 `matrix_a` 完成水平拼接[^3]。 #### 方法二:使用 `np.concatenate` 另一种方式是通过指定 axis 参数为 1 来调用 `np.concatenate` 实现同样的效果: ```python import numpy as np # 创建两个示例矩阵 matrix_c = np.array([[7, 8], [9, 10]]) matrix_d = np.array([[11, 12]]).T # 利用 concatenate 函数并设置参数 axis=1 表明是在第二维度上进行拼接 concatenated_result = np.concatenate((matrix_c, matrix_d), axis=1) print(concatenated_result) ``` 这里同样对 `matrix_d` 应用了 `.T` 操作使其成为垂直向量以便于与其他矩阵相兼容。 当涉及到不同尺寸的一维和二维数组之间的拼接时,则可能需要用到 `np.newaxis` 或者 reshape 方法调整它们的 shape 属性以确保两者的维度一致才能顺利完成拼接过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值