小编nad*_*nad的帖子

python:查找具有值的所有键

我有一个如下的字典:

mydict = {'a' : 'apple',
     'b' : 'bobb',
    'c' : {
         'd' : 'dog'
       },
      'e' : 'dog'
     }
Run Code Online (Sandbox Code Playgroud)

假设我想找到值为' dog'的所有键.在嵌套的情况下,键应该用点分隔.

所以输出应该是一个列表 ['e', 'c.d']

现在,如果我在python 3中编写下面的代码,它只输出' e'.

print(list(mydict.keys())[list(mydict.values()).index('dog')])
Run Code Online (Sandbox Code Playgroud)

如何获取嵌套密钥?

python nested python-3.x

4
推荐指数
1
解决办法
738
查看次数

从 boto3 调用 AWS Glue Pythonshell 作业时出现参数错误

根据上一篇文章,我有一个 AWS Glue Pythonshell 作业,需要从通过 boto3 调用传递给它的参数中检索一些信息。

我的胶水工作名称是test_metrics

Glue pythonshell 代码如下所示

import sys
from awsglue.utils import getResolvedOptions

args = getResolvedOptions(sys.argv,
                          ['test_metrics',
                           's3_target_path_key',
                           's3_target_path_value'])

print ("Target path key is: ", args['s3_target_path_key'])
print ("Target Path value is: ", args['s3_target_path_value'])
Run Code Online (Sandbox Code Playgroud)

调用此作业的 boto3 代码如下:

glue = boto3.client('glue')

response = glue.start_job_run(
    JobName = 'test_metrics',
    Arguments = {
        '--s3_target_path_key': 's3://my_target',
        '--s3_target_path_value': 's3://my_target_value'
    } 
)

print(response)
Run Code Online (Sandbox Code Playgroud)

200在本地计算机中运行 boto3 代码后,我看到了响应,但 Glue 错误日志告诉我:

test_metrics.py: error: the following arguments are required: --test_metrics
Run Code Online (Sandbox Code Playgroud)

我缺少什么?

amazon-web-services boto3 aws-glue

4
推荐指数
1
解决办法
5131
查看次数

在 Amazon SageMaker 中进行预测之前预处理输入数据

我有一个我们自己训练的 Keras/tensorflow 模型,它可以进行图像相关的预测。我已经按照这个训练有素的 keras 模型教程在 Sagemaker 中部署模型,并且可以调用端点进行预测。

现在在我的客户端代码中,在通过调用 Sagemaker 端点进行预测之前,我需要下载图像并进行一些预处理。我想在 SageMaker 中完成整个过程,而不是在客户端执行此操作。我怎么做?

看来我需要更新train.py这里提到的入口点python代码:

sagemaker_model = TensorFlowModel(model_data = 's3://' + sagemaker_session.default_bucket() + '/model/model.tar.gz',
                                  role = role,
                                  entry_point = 'train.py')
Run Code Online (Sandbox Code Playgroud)

其他文章表明我需要覆盖input_fn函数来捕获预处理。但是这些文章指的是使用 MXNet 框架时使用的步骤。但是我的模型是基于 Keras/tensorflow 框架的。

所以我不确定如何覆盖该input_fn功能。任何人都可以请建议吗?

python machine-learning keras tensorflow amazon-sagemaker

3
推荐指数
1
解决办法
1016
查看次数

序列到序列模型上的 Keras Attention Layer TypeError:无法迭​​代第一维未知的张量

我正在使用 Tensorflow2.1.1并尝试使用 Attention 构建序列到序列模型。

latent_dim = 300
embedding_dim=100
batch_size  = 128

# Encoder
encoder_inputs = tf.keras.Input(shape=(None,), dtype='int32')

#embedding layer
enc_emb =  tf.keras.layers.Embedding(x_voc, embedding_dim,trainable=True)(encoder_inputs)

#encoder lstm 1
encoder_lstm = tf.keras.layers.LSTM(latent_dim,return_sequences=True,return_state=True,dropout=0.4,recurrent_dropout=0.4)
encoder_output, state_h, state_c = encoder_lstm(enc_emb)
print(encoder_output.shape)

# Set up the decoder, using `encoder_states` as initial state.
decoder_inputs = tf.keras.Input(shape=(None,), dtype='int32')

#embedding layer
dec_emb_layer = tf.keras.layers.Embedding(y_voc, embedding_dim,trainable=True)
dec_emb = dec_emb_layer(decoder_inputs)

decoder_lstm = tf.keras.layers.LSTM(latent_dim, return_sequences=True, return_state=True,dropout=0.4,recurrent_dropout=0.2)
decoder_output,decoder_fwd_state, decoder_back_state = decoder_lstm(dec_emb,initial_state=[state_h, state_c])

# Attention layer
attn_out, attn_states = tf.keras.layers.Attention()([encoder_output, decoder_output])

# Concat …
Run Code Online (Sandbox Code Playgroud)

python machine-learning deep-learning keras tensorflow

3
推荐指数
1
解决办法
4939
查看次数

访问上一个列表的列表项

我在python 3.x中有一个列表列表:

deliveryData=[[1,5,3],[2,7,8],[8,10,5]]
Run Code Online (Sandbox Code Playgroud)

我想比较/操作当前列表(例如[2,7,8])的单个项目与之前的列表(例如[1,5,3]).我怎么做?

使用以下示例代码测试此功能:

deliveryData=[[1,5,3],[2,7,8],[8,10,5]]
for data in deliveryData[1:]:
    print(data)
    print(data[-1])
Run Code Online (Sandbox Code Playgroud)

当我在列表中[1,5,3]data[-1],我想我可以访问列表,[2,7,8]但这是不对的.

有人可以提供任何建议吗?

python python-3.x

2
推荐指数
1
解决办法
56
查看次数

brew install libusb 链接失败

我正在Mac 中使用brew安装libusb

brew 安装 libusb

链接步骤失败如下

Error: The `brew link` step did not complete successfully The formula built, but is not symlinked into /usr/local 

Could not symlink lib/libusb-1.0.0.dylib 

Target /usr/local/lib/libusb-1.0.0.dylib already exists. 

You may want to remove it:   rm '/usr/local/lib/libusb-1.0.0.dylib'

To force the link and overwrite all conflicting files:   brew link
--overwrite libusb
Run Code Online (Sandbox Code Playgroud)

所以我删除了现有的 libusb

须藤rm'/usr/local/lib/libusb-1.0.0.dylib'

然后做了一个链接

酿造链接--覆盖libusb

链接不起作用,下面显示错误

错误:无法符号链接 lib/libusb-1.0.0.dylib

/usr/local/lib 不可写。

如果我尝试

须藤酿造链接--覆盖libusb

相反,这也不起作用。我错过了什么?

我使用的是 OSX El Capitan 版本 10.11.4 (15E65)

homebrew libusb

1
推荐指数
1
解决办法
8689
查看次数

C++ Eclipse Neon:无法使用初始化列表初始化非聚合类型"string"

我收到错误消息

non-aggregate type 'string' (aka 'basic_string<char, char_traits<char>, allocator<char> >') cannot be initialized with an initializer list
Run Code Online (Sandbox Code Playgroud)

在Eclipse Neon的C++代码中使用以下作为全局变量.

string boardStr = {". . . . . . . . B . . . L L L . . . . . . . . . . . . . . . . .",
        ". . . . . . . . B . . . L L L . . . . . . . . . . . . …
Run Code Online (Sandbox Code Playgroud)

c++ eclipse eclipse-neon

1
推荐指数
1
解决办法
292
查看次数

Python:无法将float NaN转换为整数

我应用一个返回浮动的移动平均逻辑.我将该float转换为int,然后将其用于在OpenCV中绘制线但是低于错误

ValueError: cannot convert float NaN to integer
Run Code Online (Sandbox Code Playgroud)

示例代码

def movingAverage(avg, new_sample, N=20):
    if (avg == 0):
    return new_sample
    avg -= avg / N;
    avg += new_sample / N;
    return avg;

x1 = int(avgx1) #avgx1 is returned from the movingaverage function
y1 = int(avgy1) 
x2 = int(avgx2)
y2 = int(avgy2)
cv2.line(img, (x1, y1), (x2, y2), [255,255,255], 12)
Run Code Online (Sandbox Code Playgroud)

有关如何解决的任何建议?

python opencv

0
推荐指数
2
解决办法
3万
查看次数

从 NodeJS 调用 Python 函数

我需要从 NodeJS 服务代码调用 python 函数。我检查了这个链接并写在下面的 nodeJS 代码

const express = require('express')
const app = express()

let runPy = new Promise(function(success, nosuccess) {

    const { spawn } = require('child_process');
    const pyprog = spawn('python', ['./ml.py']);

    pyprog.stdout.on('data', function(data) {

        success(data);
    });

    pyprog.stderr.on('data', (data) => {

        nosuccess(data);
    });
});

app.get('/', (req, res) => {

    res.write('welcome\n');

    runPy.then(function(testMLFunction) {
        console.log(testMLFunction.toString());
        res.end(testMLFunction);
    });
})

app.listen(4000, () => console.log('Application listening on port 4000!'))
Run Code Online (Sandbox Code Playgroud)

假设我有一个示例 python 代码,ml.py如下所示

def testMLFunction():
    return "hello from Python"
Run Code Online (Sandbox Code Playgroud)

现在,当我运行 nodeJS …

python node.js

0
推荐指数
1
解决办法
1417
查看次数

PostgreSQL ERROR 列不存在是指一个列值

projects在 postgreSQL 中有一个表,如下所示

id.    project_name.   col3.  col4
1111.   test.          ...    ...
Run Code Online (Sandbox Code Playgroud)

id仅当id不存在时,我才想为新插入一个新行。所以我写了下面的查询

INSERT INTO projects(id, project_name)
VALUES("1234", "Test_Project")
ON CONFLICT (id)
DO NOTHING
Run Code Online (Sandbox Code Playgroud)

但它给我一个错误

Query 1 ERROR: ERROR:  column "1234" does not exist
LINE 2: VALUES("1234", "Test_Project_...
Run Code Online (Sandbox Code Playgroud)

请建议。

** 编辑**

id表中的列是一个 uuid 并且不是唯一的。可以有多个具有相同 ID 的行。根据 GMB 的建议,我尝试了以下

INSERT INTO projects(id, project_name)
    VALUES('1234', 'Test_Project')
    ON CONFLICT (create unique index on projects(id))
    DO NOTHING
Run Code Online (Sandbox Code Playgroud)

我得到以下错误

Query 1 ERROR: ERROR:  syntax error at or near "create"
LINE …
Run Code Online (Sandbox Code Playgroud)

sql string postgresql sql-update sql-insert

0
推荐指数
1
解决办法
697
查看次数