numpy.atleast_3d 函数用于将输入的数组(或多个数组)转换为至少三维的数组。如果输入的数组已经是三维或更高维的,则保持不变;如果维度低于三维,则在必要时增加维度。本文主要介绍一下NumPy中atleast_3d方法的使用。

numpy.atleast_3d

numpy.atleast_3d(*arys)      [source]

将输入查看为至少具有三个维度的数组。

参数 :

arys1, arys2, … :array_like

一个或多个类似数组的序列。 非数组输入将转换为数组。

 保留已经具有三个或三个以上维度的数组。

返回值 :

res1, res2, … :ndarray

一个数组或数组列表,每个数组均带有a.ndim>= 3。 

尽可能避免复制,并返回三个或更多尺寸的视图。 

例如,形状为(N,)的一维数组变成形状为(1,N,1)的视图,

而形状为(M,N)变成形状为(M,N,1)的视图。

例子

1)一维数组转三维

import numpy as np

arr1d = np.array([1, 2, 3])
arr3d = np.atleast_3d(arr1d)

print("原数组:")
print(arr1d)
print("转换后的数组:")
print(arr3d)
print("转换后的形状:", arr3d.shape)

2)二维数组转三维

import numpy as np

arr2d = np.array([[1, 2, 3], [4, 5, 6]])
arr3d = np.atleast_3d(arr2d)

print("原数组:")
print(arr2d)
print("转换后的数组:")
print(arr3d)
print("转换后的形状:", arr3d.shape)

3)三维数组保持不变

import numpy as np

arr3d = np.array([[[1, 2, 3], [4, 5, 6]]])
arr3d_converted = np.atleast_3d(arr3d)

print("原数组:")
print(arr3d)
print("转换后的数组:")
print(arr3d_converted)
print("转换后的形状:", arr3d_converted.shape)

4)多个数组输入

import numpy as np

arr1d = np.array([1, 2, 3])
arr2d = np.array([[4, 5, 6]])
arr3d = np.array([[[7, 8, 9]]])

results = np.atleast_3d(arr1d, arr2d, arr3d)

for i, res in enumerate(results, 1):
    print(f"数组 {i}:")
    print(res)
    print("形状:", res.shape)
    print()

5)使用示例

import numpy as np

# 将标量转换为三维数组
result1 = np.atleast_3d(3.0)
print(result1)
# 输出: array([[[3.]]])

x = np.arange(12.0).reshape(4, 3)
# 检查数组的 base 属性(x 是 reshape 的,所以它的 base 属性没有改变)
is_base_same = np.atleast_3d(x).base is x.base
print(is_base_same)
# 输出: True

# 将多个不同形状的数组转换为三维数组,并打印其形状
arrays = [np.atleast_3d([1, 2]), np.atleast_3d([[1, 2]]), np.atleast_3d([[[1, 2]]])]
for arr in arrays:
    print(arr, arr.shape)

推荐文档

相关文档

大家感兴趣的内容

随机列表