我的数据来自两个numpy数组' a'和' b':
In: a # numpy array, type int64
Out: array([4, 3, 1, ..., 3, 2, 3])
In: b # numpy array, type float 64
Out:
array([[-0.07],
[ 0.08],
[-0.53],
...,
[ 0.25],
[ 0.52],
[ 0.11]])
两个数组的长度相同,我想创建一个函数,该函数返回来自' b'取决于数组中的值' a'。我尝试了下面的功能,但它没有正确完成工作。
def my_func(a,b):
result = []
for i in b:
for z in a:
if z==5:
result.append(i)
return np.asarray(result)
答案 0 :(得分:1)
这应该有效。请注意我制作b数组的方式与你在那里格式化的方式不同。基本上,你只需要一个增量器,在这种情况下我使用了j。然后遍历a,并且每当a等于5时,将相应的b值附加到结果
import numpy as np
a = np.array([4,3,2,3,2,3,5])
b = np.array([-0.07, 0.08, -0.53, 0.25, 0.52, 0.11, 0.32])
def my_func(a,b):
result = []
j = 0
for z in a:
if z == 5:
result.append(b[j])
j += 1
return result
答案 1 :(得分:0)
你的循环是二维的,而它只需要一个维度。试试这个:
def my_func(a,b):
result = []
for i in range(len(b)):
if a[i] == 5:
result.append(b[i])
return np.asarray(result)
一种更好,更pythonic的方式就是这样:
def my_func(a,b):
result = [b[i] for i in range(len(b)) if a[i] == 5]
return np.asarray(result)
答案 2 :(得分:0)
对于Numpy数组,这非常简单:
>>> import numpy as np
>>> a = np.array([4,3,2,3,2,3,5])
>>> b = np.array([-0.07, 0.08, -0.53, 0.25, 0.52, 0.11, 0.32])
>>> b[ a==5 ]
array([ 0.32])