python - 将函数应用于列表列表 - Python
问题描述
我的目标是迭代地将列表列表传递给函数,但我返回一个错误。下面的代码创建了一个随机列表。一旦生成,它就会被传递给一个单独的函数。
所以列表的列表被命名为mult_samples
。我希望将它传递给一个函数。
但我不能通过整个列表列表。如何遍历所有子列表并将输出作为数组或 df 返回?
import pandas as pd
import random
import numpy as np
df = pd.DataFrame({
'X' : [1.0,3.0,2.0,2.0,4.0,3.0,3.0,4.0,4.0],
})
def randomSamples():
A = df['X']
n = len(df['X'])
maxv = int(A.max())
minv = int(A.min())
one_sample = []
for x in range(0, n):
one_sample.append(random.randint(minv, maxv))
samples = [one_sample for _ in range(10)]
return samples
mult_samples = randomSamples()
子集 list1 和 list2
出去:
mult_samples[0] = [3, 2, 3, 3, 4, 2, 3, 3, 3]
mult_samples[1] = [1, 4, 1, 3, 3, 4, 3, 4, 2]
def func(U, m = 2, r = 0.2):
def _maxdist(x_i, x_j):
return max([abs(ua - va) for ua, va in zip(x_i, x_j)])
def _phi(m):
x = [[U[j] for j in range(i, i + m - 1 + 1)] for i in range(N - m + 1)]
C = [len([1 for x_j in x if _maxdist(x_i, x_j) <= r]) / (N - m + 1.0) for x_i in x]
return (N - m + 1.0)**(-1) * sum(np.log(C))
N = len(U)
return abs(_phi(m + 1) - _phi(m))
output_mult_samples = func(mult_samples)
#output_mult_samples = list(map(funclist, mult_samples))
print(output_mult_samples)
出去
mult_samples[0] = 0.253692959177
mult_samples[1] = 0.0397554025155
解决方案
从我从你的问题中推断出来,假设你想申请func
你列表中的每个列表,你可以这样进行:
# apply the function 'func' to every LIST inside the main list
output_mult_samples = list(map(func, mult_samples))
编辑:获得func
有问题的定义后,您只需将其映射到列表列表。
此外,您需要修复该功能randomSamples
。到目前为止,您所做的只是one_sample
在您的samples
. 你应该这样做:
samples = []
for _ in range(10):
one_sample = []
for x in range(0, n):
one_sample.append(random.randint(minv, maxv))
samples.append(one_sample)
推荐阅读
- python - 在缺少日期的多索引数据框中移动列
- c - How pthread_exit() and pthread_cancel() calls cleanup routine in Linux?
- android - 对于 .APK 和 .AAB 的基于 URL 的共享,有哪些好的替代方案?
- python - Django 的 ManyToManyField 模型列未显示在数据库中
- discord.js - 有没有办法列出特定角色的所有成员?
- google-bigquery - 使用 bigquery 中的 java 代码执行更新操作时发生异常
- android - 离子 http 失败(响应 0)
- git - GitKraken - 无法从 www.gitlab.com 重定向到 gitlab.com
- html - Angular 8 mat-autocomplete 错误 - 'matAutocomplete' 因为它不是“输入”的已知属性
- sql - 根据不同的计数设置值