我有大量的零和一些数组,就像这样 - 每个数组的数组长度为812.
using (var context = new ClientContext(webUrl))
{
context.Credentials = new SharePointOnlineCredentials(userName,password);
var list = context.Web.Lists.GetByTitle(listTitle);
var item = list.GetItemById(itemID);
var user = context.Web.EnsureUser(accountName);
context.Load(user);
context.Load(list);
context.Load(item);
context.ExecuteQuery();
// If the properties are enabled on the list then disable them
bool updateList = list.ForceCheckout || list.EnableVersioning;
if (list.ForceCheckout) list.ForceCheckout = false;
if (list.EnableVersioning) list.EnableVersioning = false;
if (updateList)
{
list.Update();
context.ExecuteQuery();
}
// Now set the fields that are normally locked
item["Modified"] = DateTime.Now;
item["Created"] = DateTime.Now.AddDays(-3);
item["Author"] = user.Id;
item["Editor"] = user.Id;
item.Update();
context.ExecuteQuery();
}
我想要做的是计算在第一,第二,......第812位置出现1和0的次数。任何想法或想法都表示赞赏。
我想要的是一个像这样的数组:
a = [1, 0, 0, 1, 0,....]
b = [0, 1, 0, 0, 1,....]
.
.
.
x = [0, 1, 0,..........]
其中元组的第一个元素在第一个位置(索引)给出1的数量,第二个元素给出0的数量。这些数组用于存储Naive Bayes分类器实现的812个功能。
答案 0 :(得分:0)
总和的想法也会起作用,但我有想法转换列表然后为每一行运行collections.Counter
import numpy as np
import collections
nums = [
[1, 0, 0, 1, 0],
[0, 1, 0, 0, 1],
[0, 1, 0, 1, 1]
]
np_nums = np.array(nums)
transposed = np.transpose(np_nums)
for i, row in enumerate(transposed):
print("Index {} {}".format(i, dict(collections.Counter(row))))
输出:
Index 0 {1: 1, 0: 2}
Index 1 {0: 1, 1: 2}
Index 2 {0: 3}
Index 3 {1: 2, 0: 1}
Index 4 {0: 1, 1: 2}
这意味着在索引0处有一个零和两个零,在索引1处有一个零和两个零
答案 1 :(得分:-1)
这是我根据你的问题理解的
def arrayCount(arrays, index):
data = {}
for x in arrays:
if data.get(x[index]) is None:
data[x[index]] = 1
else:
data[x[index]] += 1
return data
a = [1, 0, 0, 1, 0]
b = [0, 1, 0, 0, 1]
x = [0, 1, 0, 1, 1]
y = [0, 1, 0, 1, 1]
z = [0, 2, 0, 1, 1]
arrays = [a, b, x, y, z]
print arrayCount(arrays, 1)
'''OUTPUT'''
# {0: 1, 1: 3, 2: 1}
答案 2 :(得分:-1)
这里我提供了一个通用解决方案(你可以将它用于包含0和1的数组中的任何值)。将所有列表组合成numpy nd-array,因为所有列表都具有相同的长度
import numpy as np
concat_array = np.concatenate((a,b,c,...x), axis=0)
查找沿轴的值出现次数= 0(列式)并组合形成元组
# use loop if have more unique values
n_ones = (concat_array = 1).sum(axis=0)
n_zeros = (concat_array = 0).sum(axis=0)
#zip it to form a tuple
result = list(zip(n_ones, n_zeros))
打印(结果)
[(1, 2), (2, 1), (1, 2), (0, 3)] #a dummy result