mean_arr = np.mean(report_arr[:, 1:], axis=0)出现too many indices for array: array is 1-dimensional, but 2 were indexed
时间: 2024-03-03 09:54:03 浏览: 174
这个错误可能是因为 `report_arr` 是一个一维数组,而你在尝试使用 `[:, 1:]` 对其进行切片,导致出现了该错误。你需要确保 `report_arr` 是一个二维数组,可以使用 `np.atleast_2d()` 函数将其转换为二维数组,例如:
```
report_arr = np.atleast_2d(report_arr)
mean_arr = np.mean(report_arr[:, 1:], axis=0)
```
这样就能避免该错误了。
相关问题
优化这段代码dst = np.array(dst) if len(dst) == 4: pass else: dis_arr = np.sqrt(dist.cdist(dst, dst)) uptri_idx = np.triu_indices_from(dis_arr, k=1) delete_pos = np.where(dis_arr[uptri_idx] < 5) dst = np.delete(dst, uptri_idx[1][delete_pos[0]], axis=0)
# 将原来的代码拆分成两个函数,提高可读性和复用性
def optimize_dst(dst):
if len(dst) == 4:
return dst
else:
dis_arr = np.sqrt(dist.cdist(dst, dst))
uptri_idx = np.triu_indices_from(dis_arr, k=1)
delete_pos = np.where(dis_arr[uptri_idx] < 5)
dst = np.delete(dst, uptri_idx[1][delete_pos[0]], axis=0)
return dst
def test_optimize_dst():
dst1 = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
dst2 = np.array([[0, 0], [0, 1], [1, 0], [2, 0], [2, 1]])
dst3 = np.array([[0, 0], [0, 1], [1, 0], [2, 0], [2, 1], [3, 1]])
assert np.array_equal(optimize_dst(dst1), dst1)
assert np.array_equal(optimize_dst(dst2), np.array([[0, 0], [0, 1], [1, 0], [2, 0], [2, 1]]))
assert np.array_equal(optimize_dst(dst3), np.array([[0, 0], [0, 1], [1, 0], [2, 0], [2, 1], [3, 1]]))
print("All test cases pass")
test_optimize_dst()
unique_arr, indices = np.unique(arr, axis=0, return_index=True) 这是什么意思
这行代码使用 NumPy 库中的 `unique` 函数对二维数组 `arr` 进行处理,返回两个值:去重后的数组 `unique_arr` 和保留原数组中第一次出现的元素的下标数组 `indices`。
其中,`axis=0` 表示按照行的方向进行去重,`return_index=True` 表示返回下标数组。因此,`unique_arr` 是一个去重后的二维数组,`indices` 是一个一维数组,包含了去重后的数组中每个元素在原数组中第一次出现的下标。
需要注意的是,如果 `arr` 数组中有多个相同的行,`unique` 函数会将它们全部视为重复元素,只保留第一个出现的元素,并返回它们在 `unique_arr` 中的下标。
阅读全文