我有一个二维数组数据。并且每次第j次迭代为1时都希望获得计数。 其中i =行,j =列。 如果没有for循环,我该怎么做呢?
概念上是这样的:
for r in range(row):
if(data[r][j] == 1)
amount += 1
答案 0 :(得分:1)
您可以执行以下操作:
import numpy as np
a = np.array([[0, 1], [1, 1]])
j = 1
np.sum(a[:, j] == 1)
会给你2个结果
,np.sum(a[:, 0] == 1)
将给出1
如果您在评论中提到要在多个数组上使用条件,则可以使用np.logical_and(condition1, condition2)
:
np.sum(np.logical_and(a[:, 0] == 1, b[:, 0] == 2))
答案 1 :(得分:0)
我解释这个问题,你想要迭代两个行,列和列,并为数据中的每个条目添加1到procedure TJSON_Sample.FormCreate(Sender: TObject);
var
LITEM, lJsonValue: TJSONValue;
lJsonData: string;
begin
lJsonValue := TJSONObject.ParseJSONValue(TEncoding.
Default.GetBytes(lJsonData), 0);//lJsonData contains the above mentioned JSON data
if lJsonValue <> nil then
try
begin
for LITEM in lJsonValue as TJSONArray do
begin
cmbBox_Name.Items.Add(((LITEM as TJSONObject).Get('Name') .JsonValue as TJSONString).Value);
end;
end;
finally
lJsonValue.Free;
end;
end;
。这可以在没有循环的情况下完成,如下所示。
amount
如果是instaead,则修复了一列import numpy as np
data = np.ones((6,8))
amount = data[data == 1].sum()
print amount
,只想要此列中的金额:
j