我有四个数组,比如A,B,C和D,它们的大小相同,并且我想删除它们中的所有0.如果A有零,B,C和D也有一个,在同一位置.所以我想循环A的元素:
for n in range(NumElements):
if A[n]==0:
A.pop(n)
B.pop(n)
C.pop(n)
D.pop(n)
Run Code Online (Sandbox Code Playgroud)
当然,这不起作用,因为从数组弹出0会减小它们的大小,所以我最终尝试访问A [NumElements-1],而现在A只是NumElements-m long.我知道我应该使用数组副本,但数组很长,我想保持低内存消耗,因为我在Java虚拟机中工作(不要问:(((().另外,我想要一种有效的方法,但最重要的是可读(这段代码必须由像我这样的Python文盲维护,所以我需要亲吻).谢谢,
deltaquattro
我有一个nxm矩阵V,我计算正方形S=V'*V.对于我的后续计算,我只需要对角线S,所以我写s=diag(V'*V).然而,这有点浪费,因为我也在计算所有非对角元素.有没有一种快速的方法只计算对角元素S?for当然,我可以使用循环,但显式循环不是在MATLAB中做事的快捷方式.
谢谢!!!
我有以下数据框和向量:
dframe <- as.data.frame(matrix(1:9,3))
vector <- c(2,3,4)
Run Code Online (Sandbox Code Playgroud)
我想将的每一列乘以dframe的对应值vector。这不会做:
> vector * dframe
V1 V2 V3
1 2 8 14
2 6 15 24
3 12 24 36
Run Code Online (Sandbox Code Playgroud)
每行的dframe乘以相应值vector,而不是每个列。有什么惯用的解决方案,还是我陷入了困境for?
在MATLAB中,我有一个长度为n的向量x,其中n通常是O(10),我想构建一个大小为[n ^ m,m]的高矩阵A,其中m再次为0(10).矩阵具有一种特殊的形式:如果n = 4且m = 6,则让
x=[x1; x2; x3; x4]
Run Code Online (Sandbox Code Playgroud)
那么A是
x1 x1 x1 x1 x1 x1
x2 x1 x1 x1 x1 x1
x3 x1 x1 x1 x1 x1
x4 x1 x1 x1 x1 x1
x1 x2 x1 x1 x1 x1
x2 x2 x1 x1 x1 x1
x3 x2 x1 x1 x1 x1
x4 x2 x1 x1 x1 x1
x1 x3 x2 x1 x1 x1
. .
. .
. .
x4 x4 x4 x4 x4 x4
Run Code Online (Sandbox Code Playgroud)
实际上,每列都是通过重复x的元素获得的,每列的步幅越来越大.我怎样才能做到这一点?如果可能的话,我更喜欢有效的(矢量化)解决方案,因为正如您所看到的,A的行数随m呈指数增长.非常感谢,
塞尔吉奥 …
我想创建一个情节标题"Case1,\ xi_ {DES}",其中\ xi是希腊字母,DES必须是下标,"Case1"实际存储在变量中.以下
我试过了
Case="Case1"
x=1:3
y=rnorm(3)
plot(x,y, cex=1.5, cex.lab=1.5,
pch=16, xlab="degree", ylab=expression(italic(paste("|",hat(F),"|"))),
main=bquote(.(Case) ~ , eta[DES]), col="tomato",log="y")
Run Code Online (Sandbox Code Playgroud)
但这不起作用.以下类型的作品:
plot(x,y, cex=1.5, cex.lab=1.5,
pch=16, xlab="degree", ylab=expression(italic(paste("|",hat(F),"|"))),
main=bquote(.(Case) ~ eta[DES]), col="tomato",log="y")
Run Code Online (Sandbox Code Playgroud)
但我必须删除逗号.这是为什么?有没有办法在R中获得我想要的头衔?
我收到了一个Perl脚本,该脚本当前从文本文件中读取目录列表并将它们存储在字符串向量中.我想修改它,以便它读取当前文件夹中所有目录的名称,并将它们存储在向量中.这样,每当当前文件夹中的目录列表发生变化时,用户就不必修改输入文件.
我不知道Perl,除了它看起来像Perl中的数组索引从0开始(如在Python中).我对bash和Python有基本的了解,但我不想在Python中从头开始重写脚本.这是一个漫长而复杂的脚本,我不确定我是否能用Python重写它.你能帮助我吗?以下是当前正在读取文本文件的脚本部分:
#!/usr/bin/perl
use Cwd;
.
.
.
open FILES, "<files.txt" or die; # open input file
<FILES> or die; # skip a comment
my $nof = <FILES> or die; # number of directories
<FILES> or die; # skip a comment
my @massflow; # read directories
for (my $i = 0; $i < $nof; $i++){
chomp($massflow[$i] = <FILES>);
}
.
.
.
close(FILES);
Run Code Online (Sandbox Code Playgroud)
PS我认为脚本是相当不言自明的,但只是为了确定,这篇文章打开一个名为"files.txt"的文本文件,跳过一行,读取目录数,跳过另一行并读取,每个一个名称line,当前文件夹中所有目录的名称,如"files.txt"中所写.
编辑我在@Sobrique建议之后编写了这个脚本,但它也列出了文件,而不仅仅是dirs:
#!/usr/bin/perl
use Cwd;
my @flow = glob ("*");
my $arrSize = @flow;
print $arrSize;
for …Run Code Online (Sandbox Code Playgroud) 测试数据框:
> foo
x y z
1 0.191 0.324 0.620
2 0.229 0.302 0.648
3 0.191 0.351 0.626
4 0.229 0.324 0.630
5 0.152 0.374 0.656
6 0.191 0.295 0.609
7 0.229 0.267 0.665
8 0.152 0.353 0.657
9 0.152 0.355 0.655
Run Code Online (Sandbox Code Playgroud)
两个线性模型:
model1 <- lm(z~polym(x,y,degree = 1),data=foo)
model2 <- lm(z~polym(x,y,degree = 2),data=foo)
Run Code Online (Sandbox Code Playgroud)
两个模型的ANOVA返回:
> anova(model1,model2)
Analysis of Variance Table
Model 1: z ~ polym(x, y, degree = 1)
Model 2: z ~ polym(x, y, degree = 2)
Res.Df RSS …Run Code Online (Sandbox Code Playgroud) 我正在使用Mac OSX上的Keras在虚拟数据上训练MobileNet体系结构。我同时设置了nump.random和tensorflow.set_random_seed,但是由于某些原因,我无法获得可重复的结果:每次重新运行代码时,都会得到不同的结果。为什么?这不是归因于GPU,因为我在具有Radeon显卡的MacBook Pro 2017上运行,因此Tensorflow没有利用它。该代码运行
python Keras_test.py
Run Code Online (Sandbox Code Playgroud)
因此这不是状态问题(我不使用Jupyter或IPython:每次运行代码时都应重置环境)。
编辑:我通过导入Keras 之前移动所有种子的设置来更改代码。结果仍然不确定,但是结果的方差比以前小得多。这很奇怪。
当前模型很小(就深度神经网络而言)并不微不足道,它不需要GPU即可运行,并且可以在现代笔记本电脑上进行几分钟的训练,因此任何人都可以重复我的实验。我邀请您这样做:我对了解一个系统到另一个系统的变化程度非常感兴趣。
import numpy as np
# random seeds must be set before importing keras & tensorflow
my_seed = 512
np.random.seed(my_seed)
import random
random.seed(my_seed)
import tensorflow as tf
tf.set_random_seed(my_seed)
# now we can import keras
import keras.utils
from keras.applications import MobileNet
from keras.callbacks import ModelCheckpoint
from keras.optimizers import Adam
import os
height = 224
width = 224
channels = 3
epochs = 10
num_classes = 10 …Run Code Online (Sandbox Code Playgroud) 环境:我conda在配备 High Sierra 的 Mac 上使用 4.6.7。
我有一些遗留的 Python 代码,首先我想运行它。当然,由于这是研究代码,我没想到会找到“花哨的东西(!!)”,例如测试套件,但我希望至少requirements.txt能提供一个文件。白日梦。在对组成项目的各个文件的列表进行 GREP 后import,我得出了以下要安装的软件包列表:
conda install os sys math time scipy numpy zipfile urllib.request shutil PIL skimage config itertools logging json re random collections matplotlib visualize glob random datetime tensorflow keras colorsys IPython
Run Code Online (Sandbox Code Playgroud)
我将所有这些都放在对 的一次调用中conda,因为根据
你应该
同时安装在此环境中所需的所有程序。一次安装 1 个程序可能会导致依赖性冲突。
(顺便说一句,有没有办法在命令中包含换行符,或者它必须那么长吗?)
但是,conda给了我错误:
PackagesNotFoundError: The following packages are not available from current channels:
- config
- math
- visualize
- datetime
- urllib.request …Run Code Online (Sandbox Code Playgroud) 我在使用bash脚本时遇到问题。基本上,在我的脚本中运行命令
bjobs -u $1
Run Code Online (Sandbox Code Playgroud)
$ 1是脚本参数,它是集群中用户的ID。如果用户$ 1在群集上没有正在运行/待处理的作业,则打印bjobs
No unfinished jobs found
Run Code Online (Sandbox Code Playgroud)
到标准输出。另外,退出状态为255。如果用户$ 1确实有工作,则bjobs将输出:
JOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAME SUBMIT_TIME
45823 .......
45824 .......
.
.
Run Code Online (Sandbox Code Playgroud)
并且退出状态为0。我想awk解析bjobs的输出。我试过了
bjobs -u $1 | awk '...'
Run Code Online (Sandbox Code Playgroud)
其中“ ...”是我的awk解析程序。这不能很好地工作,因为显然,当用户$ 1没有正在运行/待处理的作业时,字符串“未找到未完成的作业” 不会传递给awk。同样的情况发生在
bjobs -u $1 > foo
awk '...' foo
Run Code Online (Sandbox Code Playgroud)
有什么建议么?
我有一个纯粹的数字数据框,我想要将它们的列堆叠(连接)在一起.stack干得好:
foo <- matrix(rnorm(100),20,5)
foo <- data.frame(foo)
bar <- stack(foo)
Run Code Online (Sandbox Code Playgroud)
但是,我不喜欢给出的默认列名stack,即values和id.当然,我可以改变它们
colnames(bar) <- c("x","y")
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有任何功能可以让我定义结果(堆叠)数据帧的列名.
我有数据框
df=data.frame(x=rnorm(8),y=runif(8),longstring=c("foo_100_Case1","foo_125_Case1","bar_100_Case1","bar_125_Case1","foo_100_Case2","foo_125_Case2","bar_100_Case2","bar_125_Case2"),stringsAsFactors = F)
Run Code Online (Sandbox Code Playgroud)
我需要将最后一列拆分为三列,分隔符为"_".我一直在做以下事情:
a=matrix(unlist(strsplit(df$longstring,"_",fixed=T)),8,3,byrow = T)
df$type=a[,1]
df$point=a[,2]
df$case=a[,3]
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有一种更简单的方法:组合strsplit和unlist特别笨拙,并且它不会使代码非常易读.
r ×5
dataframe ×3
python ×3
matlab ×2
matrix ×2
anova ×1
arrays ×1
awk ×1
bash ×1
conda ×1
expression ×1
installation ×1
keras ×1
package ×1
performance ×1
perl ×1
regression ×1
repeat ×1
strsplit ×1
tensorflow ×1
title ×1
vector ×1