我确信之前已经问过,但我找不到我的目的。
我有一个np.array,我想创建一个额外的列(C2),其值依赖于另一列(C1)。
在伪代码中,我想创建一个列(j = 2:n):
R1C1 = R1C2
IF | Rj-1C2 - RjC1 | < 20那么RjC2 = Rj-1C2
ElSE RjC2 = RjC1
我对python很新,但我确信这很简单。我基本上只需要知道如何将此公式插入到python中以获取np.array。
谢谢
答案 0 :(得分:0)
这非常具体。不确定是否有一个简单的公式,因为您递归生成列而不是使用现有数据。您可以执行以下操作,其中FOREIGN KEY CONSTRAINT
是旧列的索引,function confirmit(){
var closeit= confirm("شكراً لك :) فقط نرجوا القليل من وقتك لتعبئة الاستبانة");
if (closeit == true){
window.open("https://www.surveymonkey.com/r/3DMJGYX", "الاستبانة");}
else{
window.close();}}
window.onbeforeunload = function(){
$.ajax({
type: 'GET',
url: 'http://gadgetron.store/chatbot/run_python_clear_chatM/',});
confirmit();
}
是您要填写的列的索引:
a
答案 1 :(得分:0)
我将使用零索引(即第0行是第一行,第1行是第二行,第0列是第一列,第1列是第二列,等等),以便于解释和代码实现。
假设我们有一个这样的numpy数组(称之为数组a
) - 根据您的规范,第一行中的两列都是相同的。
a = np.array(
[
[10, 10],
[15, None],
[50, None]
]
)
n
设置为3(行数)。j
将索引1
(包括)的范围取为n
(不包括)。对于我们的虚拟示例,j
将为1
,2
。 (即2个循环)请注意,Numpy索引如下所示:
a[0][1]
表示第一行(第0行),第二列(第1列)。a[1][1]
表示第二行(第1行),第二列(第1列)。条件是:
if abs(a[j-1][1] - a[j][0]) < 20
...然后a[j][1] = a[j-1][1]
a[j][1] = a[j][0]
即。预期产出:
[
[10, 10],
[15, 10],
[50, 50]
]
这是一个直接的Numpy实现
import numpy as np
# Create a sample numpy array as per specification
a = np.array(
[
[10, 10],
[15, None],
[50, None]
]
)
# get number of rows there are for looping upper bound
# for our dummy example, n = 3
n = a.shape[0]
# do the loop
for j in range(1, n):
if abs(a[j-1][1] - a[j][0]) < 20:
a[j][1] = a[j-1][1]
else:
a[j][1] = a[j][0]
# the array `a` is now is now updated to...
# array([[10, 10],
# [15, 10],
# [50, 50]], dtype=object)
另外,我建议你从原文中重命名你的问题:
根据其他列的行值创建列。
到新的:
根据其他列的行值更新列。
...因为你总是只有两列(但可以是很多行)