python - python中两个数字之间的数组中的值
问题描述
所以制作一个真正解释我想要的标题比我想象的要难,所以我来解释一下。
我有一个用零填充的数组,每次满足条件时都会添加值,所以在 1 个时间步迭代之后,我得到了这样的结果(减去标题):
当前数组 =
bubble_size y_coord
14040 42
3943 71
6345 11
0 0
0 0
....
在此时间步完成后,此 current_array 被设置为 previous_array 并用零擦除,因为每次都没有保证的条目数。
现在真正的问题是我希望能够检查previous_array的第一列中的所有行,看看当前气泡大小是否在任何一边的5%以内,如果是,我想把当前的y位置拿走与previous_array 的第二列中匹配的气泡大小编号相关联。
目前我有类似的东西;
if bubble_size in current_array[:, 0]:
do_whatever
但我不知道如何在不使用循环的情况下提取关联的 y_coord,我可以这样做(数组大约有 100 行,至少有 1000 个时间步,所以我想让它尽可能高效)但是想避免
我已经包含了我对 for 循环的想法(注意 current 和 previous_array 实际上是 current 和 previous_frame)
for y in range (0, array_size):
if bubble_size >> previous_frame[y,0] *.95 &&<< previous_frame[y, 0] *1.05:
distance_travelled = current_y_coord - previous_frame[y,0]
y = y + 1
任何帮助是极大的赞赏 :)
解决方案
我可能在这里没有遇到您的问题,但是如果您想首先检查气泡大小是否在同一行元素之间 95 % 您可以使用以下命令:
import numpy as np
def apply(p, c): # For each element check the bubblesize grow
if(p*0.95 < c < p*1.05):
return 1
else:
return 0
def dist(p, c): # Calculate the distance
return c-p
def update(prev, cur):
assert isinstance(
cur, np.ndarray), 'Current array is not a valid numpy array'
assert isinstance(
prev, np.ndarray), 'Previous array is not a valid numpy array'
assert prev.shape == cur.shape, 'Arrays size mismatch'
applyvec = np.vectorize(apply)
toapply = applyvec(prev[:, 0], cur[:, 0])
print(toapply)
distvec = np.vectorize(dist)
distance = distvec(prev[:, 1], cur[:, 1])
print(distance)
current = np.array([[14040, 42],
[3943,71],
[6345,11],
[0,0],
[0,0]])
previous = np.array([[14039, 32],
[3942,61],
[6344,1],
[0,0],
[0,0]])
update(previous,current)
PS:请您根据我的示例告诉我们您要寻找的最终数组是什么?
推荐阅读
- google-bigquery - 使用自定义分区从 GCS 上传到 bigquery
- java - JPA实体字段中多维数组的正确注释是什么
- r - 根据一列中的值创建新列而不是另一列
- excel - 使用 Excel VBA 早期绑定在 Powerpoint 中更改图像
- c++ - 如何使用 QValueAxis 在 QChart 中包含条形?
- c# - 我可以阻止客户端下载浏览器上可见的 pdf 文件吗
- excel - 在excel现有单元格之间插入单元格
- python - Python 可访问的类变量、敏感数据和恶意编码器(黑帽黑客)
- angular - Angular在Guard中获取匹配的url路径
- python-3.x - 如何使用python将word文档表上的普通文本更改为包含行和列的彩色文本