基本操作
np.squeeze(x, axis=None)
#numpy没有unsqueeze操作
np.expand_dims(x, axis) #表示在axis轴升维
np.repeat(x, n, axis=0) #在axis把数据x复制n次
np.concatenate((a1, a2), axis=0) #在0轴做concat操作
判断两个array是否完全相同
array1 = np.array([[1, 2, 3], [4, 5, 6]])
array2 = np.array([[1, 2, 3], [4, 5, 6]])
# 使用numpy的array_equal函数
are_identical = np.array_equal(array1, array2)
print(are_identical) # 如果输出True,说明两个数组完全相同
# 或者使用np.all配合 ==
are_identical_alternative = np.all(array1 == array2)
print(are_identical_alternative) # 输出也会是True
#请注意,np.array_equal()默认情况下会区分浮点数的小数精度差异,而np.all(array1 == array2)配合一个很小的相对误差阈值(如使用np.isclose())可以用来比较近似相等的浮点数组
找出两个array不相同的元素
import numpy as np
# 创建两个numpy数组
array1 = np.array([[1, 2, 3], [4, 5, 6]])
array2 = np.array([[1, 2, 3], [4, 7, 6]]) # 第二行第二个元素不同
# 检查哪些元素不相等
diff_mask = array1 != array2
# 找出不相等元素的位置
different_elements_positions = np.where(diff_mask)
# 提取并打印不同的元素
for i, j in zip(*different_elements_positions):
print(f"Array1[{i}][{j}] = {array1[i][j]}, Array2[{i}][{j}] = {array2[i][j]}")
# 输出:Array1[1][1] = 5, Array2[1][1] = 7
保存和读取numpy数据的文本
#保存numpy
data = np.fromfile('./in.bin', dtype=np.float32)
np.savetxt('input.txt', data, fmt='%f', delimiter='\n')
#读取txt到numpy
array = np.loadtxt('file.txt', dtype=float, delimiter='\n', skiprows=0) #跳过前n行
或
array = np.genfromtxt('file.txt', delimiter='\n', skip_header=18)