gpt4 book ai didi

python - 函数获取 NumPy 数组中的列数,如果它是一维数组则返回 1

转载 作者:太空宇宙 更新时间:2023-11-03 13:19:42 25 4
gpt4 key购买 nike

我已经在 3xN NumPy 数组上定义了操作,我想遍历数组的每一列。

我试过:

for i in range(nparray.shape[1]):

但是,如果 nparray.ndim == 1,则失败。

是否有一种干净的方法来确定 NumPy 数组的列数,例如,如果它是 1D 则获取 1 > 数组(就像 MATLAB 的 size 操作一样)?

否则,我已经实现了:

if nparray.ndim == 1:
num_points = 1
else:
num_points = nparray.shape[1]

for i in range(num_points):

最佳答案

如果您只是在寻找不那么冗长的内容,您可以这样做:

num_points = np.atleast_2d(nparray).shape[1]

当然,这会创建一个新的临时数组来适应它的形状,这有点愚蠢……但它会非常便宜,因为它只是同一内存的 View 。

但是,我认为您的显式代码更具可读性,除了我可能会使用 try:

try:
num_points = nparray.shape[1]
except IndexError:
num_points = 1

如果您重复执行此操作,无论您做什么,都应该将其包装在一个函数中。例如:

def num_points(arr, axis):
try:
return arr.shape[axis]
except IndexError:
return 1

那么你所要做的就是:

for i in range(num_points(nparray, 1)):

当然,这意味着您只需编辑一个地方就可以在任何地方进行更改,例如:

def num_points(arr, axis):
return nparray[:,...,np.newaxis].shape[1]

关于python - 函数获取 NumPy 数组中的列数,如果它是一维数组则返回 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18412212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com