我是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] ];


有一种简洁的方法吗?

最佳答案

# 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,则不会应用这两个函数的唯一方法,这似乎不太可能。

关于python - Python if函数跨向量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38256212/

10-11 02:54
查看更多