我是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/