np.array向上取整
时间: 2023-10-20 16:07:52 浏览: 163
要将一个 NumPy 数组中的所有元素向上取整,你可以使用 `numpy.ceil()` 函数。下面是一个示例代码:
```python
import numpy as np
arr = np.array([1.5, 2.3, 4.8, 3.2])
ceil_arr = np.ceil(arr)
print(ceil_arr)
```
输出结果为:
```
[2. 3. 5. 4.]
```
在这个例子中,`np.ceil()` 函数将数组 `arr` 中的每个元素向上取整并返回新的数组 `ceil_arr`。
相关问题
def sample(self, n_samples): steps = n_samples // self.batch_size + 1 data = [] for _ in trange(steps, desc='Synthetic data generation'): Z_ = next(self.get_batch_noise()) records = self.generator(Z_) data.append(records) return np.array(np.vstack(data))
这段代码是一个用于生成合成数据的函数。让我逐步解释这段代码的功能和实现方式。
`sample`函数接受一个参数`n_samples`,代表要生成的样本数量。该函数的作用是使用生成器模型生成指定数量的合成数据。
首先,计算生成数据所需的迭代步数(steps)。这个值是通过将`n_samples`除以批量大小(`self.batch_size`)并向上取整得到的。这是为了确保生成足够数量的数据。
接下来,创建一个空列表`data`,用于存储生成的数据。
在一个循环中,从噪声生成器(`self.get_batch_noise()`)中获取一个批次的噪声数据`Z_`。噪声数据用于输入到生成器模型中。
然后,通过调用生成器模型(`self.generator(Z_)`),使用噪声数据生成合成数据(records)。
将生成的合成数据添加到`data`列表中。
最后,使用`np.vstack`将`data`列表中的所有合成数据垂直堆叠起来,形成一个numpy数组,并将其返回。
需要注意的是,这段代码缺少了一些必要的引入语句和类定义,可能需要补充相关代码才能完整运行。
PolygonZone 类中只有def trigger(self, detections: Detections) -> np.ndarray: """ Determines if the detections are within the polygon zone. Parameters: detections (Detections): The detections to be checked against the polygon zone Returns: np.ndarray: A boolean numpy array indicating if each detection is within the polygon zone """ clipped_xyxy = clip_boxes( boxes_xyxy=detections.xyxy, frame_resolution_wh=self.frame_resolution_wh ) clipped_detections = replace(detections, xyxy=clipped_xyxy) clipped_anchors = np.ceil( clipped_detections.get_anchor_coordinates(anchor=self.triggering_position) ).astype(int) is_in_zone = self.mask[clipped_anchors[:, 1], clipped_anchors[:, 0]] self.current_count = np.sum(is_in_zone) return is_in_zone.astype(bool)这个方法
根据您提供的代码,`PolygonZone` 类中只有一个名 `trigger` 的方法。该方法用于确定传入的检测结果是否位于多边形区域内。
在这个方法中,首先通过调用 `clip_boxes` 函数对检测结果的坐标进行裁剪,以适应帧的分辨率。然后,使用 `replace` 函数将裁剪后的坐标替换原始的检测结果。
接下来,通过调用 `clipped_detections.get_anchor_coordinates` 方法获取裁剪后的检测结果的锚点(anchor)坐标,并进行向上取整和类型转换。然后,使用这些锚点坐标在 `mask` 属性中进行索引操作,得到一个布尔类型的数组 `is_in_zone`,表示每个检测结果是否在多边形区域内。
最后,通过对 `is_in_zone` 数组求和,更新 `current_count` 属性,并将 `is_in_zone` 转换为布尔类型的数组返回。
请注意,上述代码中引用的 `clip_boxes`、`replace` 和 `get_anchor_coordinates` 函数以及 `mask` 属性的实现没有给出。您需要根据具体需求实现或导入这些函数和属性,并根据需要进行调整。
阅读全文