Python如果跨矢量函数

时间:2016-07-07 22:23:54

标签: python function if-statement vector indexing

我是Python的新手,并试图找出如何执行以下操作。

我有一个数据数组X,它看起来像:

X = [ 1 2 3

      4 5 6 

      7 8 9 

      10 11 12];

这样第一列X[0]就是

X[0] =[1
       4
       7
       10];

第二列X[1]是,

X[1] =[2
       5
       8
       11];

和第三列X[2]是,

X[2] =[3
       6
       9
       12];

我想要做的是生成一个随机数k,如果第一列X[0]中的任何值大于k我想要乘以第三列列函数(2*X[0]),如果任何值小于k,我想乘以不同的函数(2*k)。

因此,如果k=2,则第三列变为: 和第三栏X[2]是,

X[2] =[3*2*k
       6*2*X[0,1]
       9*2*X[0,2]
       12*2*X[0,3] ];

有简洁的方法吗?

2 个答案:

答案 0 :(得分:1)

# inverted your rows and columns and got them in a list of list
X = [[1,4,7,10],
     [2,5,8,11],
     [3,6,9,12]]

# lets generate random number k between 0 and 1000
import random
k = random.randint(0, 1000)

# the conditional
for n in X[0]:
    if n > k:
        X[2] = your_function(X[2])
    if n < k:
        X[2] = your_other_function(X[2])

我很确定有更好的方法可以做到这一点,但这个看起来很简单。当然your_function和your_other_function取决于你,在任何情况下我都不清楚你想要什么。

另外,你有没有想过这个?如果X [0]中的所有值都恰好等于k,则这两个函数不会被应用的唯一方法,这似乎不太可能。

答案 1 :(得分:0)

X = [
    [ 1, 4, 7, 10 ],
    [ 2, 5, 8, 11 ],
    [ 3, 6, 9, 12 ] ]

def mapping(x):
    if x[0] < K: return x[1]*2*K
    elif x[0] > K: return x[1]*2*x[0]
    else: return x[1]

K = 2
X[2] = map(mapping, zip(X[0], X[2]))