给定两个通用的numpy 1-d数组(无论如何都不保证值),我需要检查一个数组是否为另一个的子数组。
通过转换为字符串可以很容易且简短,但可能不是最有效的:
import numpy as np
def is_sub_arr(a1, a2):
return str(a2).strip('[]') in str(a1).strip('[]')
arr1 = np.array([9, 1, 3, 2, 7, 2, 7, 2, 8, 5])
arr2 = np.array([3, 2, 7, 2])
arr3 = np.array([1,3,7])
print(is_sub_arr(arr1,arr2)) # True
print(is_sub_arr(arr1,arr3)) # False
Run Code Online (Sandbox Code Playgroud)
有没有一种有效的内置/本地numpy方法来做到这一点?
dec = 0.1
data = np.array([100,200,300,400,500])
Run Code Online (Sandbox Code Playgroud)
我有一个像这样的 for 循环
y = np.zeros(len(data))
for i in range(len(data)):
if i == 0:
y[i] = (1.0 - dec) * data[i]
else:
y[i] = (1.0 - dec) * data[i] + (dec * y[i - 1])
Run Code Online (Sandbox Code Playgroud)
输出 y 是:
array([ 90. , 189. , 288.9 , 388.89 , 488.889])
Run Code Online (Sandbox Code Playgroud)
现在我想在没有循环的情况下进行上述计算,所以如果我打破代码并执行
data[0] = (1.0 - dec) * data[0]
data[1:] = (1.0 - dec) * data[1:] + (dec * data[0])
Run Code Online (Sandbox Code Playgroud)
输出数据为:
array([ 90, 189, 279, 369, 459]) …Run Code Online (Sandbox Code Playgroud) 我有学生姓名、不同科目的分数、科目名称。我想在数据框中添加一列,其中包含每个学生得分最高的科目。这是数据:
Data['Subject with highest score'] = Data.groupby(['Names','Subject'])[['Scores']].transform(lambda x: x.max())
Run Code Online (Sandbox Code Playgroud) 从 Python 3.8 开始,可以在 f 字符串中使用自记录表达式,如下所示:
>>> variable=5
>>> print(f'{variable=}')
variable=5
Run Code Online (Sandbox Code Playgroud)
C# 中有等效的功能吗?
我需要并行化 for 循环。我当前的代码是循环遍历从 xarray 数据集中获取的 id 列表,从 xarray 数据集中获取具有当前 id 的行数据,调用函数(计算数据的三角分布),附加结果分布将函数转换为列表,完成后,它将列表转换为 xarray 数据集,其中每个结果都链接到当前的 id,因此稍后可以通过 ID 将这个数据集附加到“主”数据集。
我的代码看起来有点像这样:
from sklearn.preprocessing import MinMaxScaler
import xarray as xr
import scipy.stats as st
function call_func(data):
scaler = MinMaxScaler()
norm_data = scaler.fit_transform(np.reshape(data, (len(data),1)))
params = st.triang.fit(norm_data)
arg,loc,scale = params[:-2],params[-2],params[-1]
dist = st.triang(loc=loc, scale=scale, *arg)
return dist
if __name__ == "__main__":
for id in my_dataset['id'].values:
row_data= my_dataset.sel(id=id)['data'].values[0]
if len(row_data)>3 and all(row_data== 0) == False:
result = call_func(row_data)
result_list.append(result)
else:
result_list.append([])
new_dataset = xr.Dataset({'id': my_dataset['id'].values,
'dist_data':(['id','dist'],
np.reshape(np.array(result_list),(len(result_list),1))) …Run Code Online (Sandbox Code Playgroud) 我有一个字符串,必须在“!”后使用大写字母:
我编写了一个可以在一定程度上起作用的脚本,但是当最后一个字母为“!”时出现了问题。
strin "hello! there!"
strout = []
for i in range(len(strin)):
if strin[i-2] == '!':
strout.append((strin[i]).capitalize())
else:
strout.append(strin[i])
strout[0] = strout[0].capitalize()
newStr = "".join(strout)
Run Code Online (Sandbox Code Playgroud)
输出是:你好!那里!
如何防止第二个字母大写。
原因[i-2]是每当循环遇到“!” 在文本中间,它大写字母i。
这是非常基本的问题,但找不到相关的好信息。
当我想用来过滤元素的函数是异步的时,如何使用内置的过滤函数?
例子:
import asyncio
async def not_one(item):
if item == 1:
await asyncio.sleep(1) # Just to give an asyc feel..
return False
return True
async def main():
org_list = [1, 2, 3]
# IMPLEMENTATION #1 - WITHOUT USING FILTER
without_one_list = []
for item in org_list:
is_one = await not_one(item)
if is_one:
without_one_list.append(item)
print(without_one_list) # [2, 3]
# NOT WORKING #1 - not_one was never awaited
without_one_list = list(filter(not_one, org_list))
# NOT WORKING #2 - not a valid syntax …Run Code Online (Sandbox Code Playgroud) 我试图理解 Python3 中浅复制与深复制的概念。
从下面的代码中我发现 dict2 中所做的更改没有反映在 dict1 中。
1>>> dict1 = {1:[1,2]}
2>>> dict2 = dict(dict1)
3>>> dict2[1]=[1,2,3]
4>>> dict1,dict2
({1: [1, 2]}, {1: [1, 2, 3]})
Run Code Online (Sandbox Code Playgroud)
我是否正确理解上面代码中的第 2 行创建了深层副本?
我有一个字典d,我想修改键并创建一个新字典。最好的方法是什么?
这是我现有的代码:
import json
d = json.loads("""{
"reference": "DEMODEVB02C120001",
"business_date": "2019-06-18",
"final_price": 40,
"products": [
{
"quantity": 4,
"original_price": 10,
"final_price": 40,
"id": "123"
}
]
}""")
d2 ={
'VAR_Reference':d['reference'],
'VAR_date': d['business_date'],
'VAR_TotalPrice': d['final_price']
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法可以使用另一个映射字典或可以保留映射值的文件来映射值。
例如:
d3 = {
'reference':'VAR_Reference',
'business_date': 'VAR_date',
'final_price': 'VAR_TotalPrice'
}
Run Code Online (Sandbox Code Playgroud)
感谢任何提示或提示。
python ×9
python-3.x ×3
numpy ×2
append ×1
c# ×1
capitalize ×1
deep-copy ×1
for-loop ×1
letter ×1
pandas ×1
python-3.6 ×1
python-3.7 ×1