numpy 数组操作
numpy
本文字数:495 字 | 阅读时长 ≈ 2 min

numpy 数组操作

numpy
本文字数:495 字 | 阅读时长 ≈ 2 min

1. shape,dim

查看维度和维度数量

a = np.array([1, 2, 3])
print(a.shape)  # (3,)
print(a.dim)  # 1

2. newaxis

将数组增加一维度,类似于 pytorch 中的 unsqueeze

a = np.array([1, 2, 3])
a = a[np.newaxis, :]
print(a.shape)
'''
(1, 3)
'''

3. concatenate

数组拼接 concatenate((a1, a2...), axis=0)axis 为拼接的维度

a = np.array([[1, 2], [3, 4]])   # [2, 2]
b = np.array([[5, 6]])  # [1, 2]
np.concatenate((a, b), axis=0)    # 按行拼接
np.concatenate((a, b.T), axis=1)  # 按列拼接
np.concatenate((a, b), axis=None) # flatten
'''
array([[1, 2],
       [3, 4],
       [5, 6]])
array([[1, 2, 5],
       [3, 4, 6]]) 
array([1, 2, 3, 4, 5, 6])
'''

4. all,any

all: 对矩阵中的所有元素做操作,所有为 True 则返回 True
any: 对矩阵所有元素做操作,存在 True 则返回 True

np.all(A == 0)  # 判断矩阵是否为全0矩阵
np.any(A != 0)  # 判断矩阵是否存在不为0的元素

5. logical_and

两个矩阵计算逻辑与运算 logical_and(x1, x2)

x1 = [[True,True],[False, False]]
x2 = [[True, False],[True, False]]
np.logical_and(x1, x2)
'''
array([[ True, False],
       [False, False]])
'''

6. in1d

np.in1d(ar1, ar2, invert=False)

返回一个数组,如果 ar1 中的某个元素在 ar2 中存在,则 arr2 对应元素为 True,反之为 False

ar1 = np.array([0, 1, 2, 5, 0])
ar2 = [0, 2]
mask = np.in1d(ar1, ar2)
'''
mask
[ True False  True False  True]
'''

mask = np.in1d(ar1, ar2, invert=True)
'''
[False  True False  True False]
'''

7. resize

numpy.resize(a, new_shape)

注意:numpy.resize(a, new_shape)和 a.resize(new_shape)方法不同

a = np.array([[0,1], [2,3]])
b = np.resize(a, (3, 3))
'''
取a中的元素进行填充
[[0 1]
 [2 3]]
[[0 1 2]
 [3 0 1]
 [2 3 0]]
'''

a.resize(3, 3)
'''
用0进行填充,并且为in-place操作
[[0 1 2]
 [3 0 0]
 [0 0 0]]
'''
9月 09, 2024