小编mma*_*123的帖子

R中出现"warnings()"时断开循环

我遇到了一个问题:我正在运行一个循环来处理多个文件.我的矩阵是巨大的,因此如果我不小心,我经常会失去记忆.

如果创建了任何警告,有没有办法摆脱循环?它只是继续运行循环并报告它失败了很久......令人讨厌.任何想法哦明智的stackoverflow-ers ?!

warnings loops r break

98
推荐指数
3
解决办法
4万
查看次数

Grep列表的元素

我有一个文件名列表:

names = ['aet2000','ppt2000', 'aet2001', 'ppt2001']
Run Code Online (Sandbox Code Playgroud)

虽然我找到了一些可以用来grep字符串的函数,但我还没弄清楚如何grep列表中的所有元素.

比如我想:

grep(names,'aet')
Run Code Online (Sandbox Code Playgroud)

得到:

['aet2000','aet2001']
Run Code Online (Sandbox Code Playgroud)

当然不是太难,但我是Python新手


更新 上面的问题显然不够准确.下面的所有答案都适用于示例,但不适用于我的实际数据.这是我的代码来制作文件名列表:

years = range(2000,2011)
months = ["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"]
variables = ["cwd","ppt","aet","pet","tmn","tmx"]     #  *variable name*  with wildcards   
tifnames = list(range(0,(len(years)*len(months)*len(variables)+1)  ))
i = 0
for variable in variables:
   for year in years:
      for month in months:
         fullname = str(variable)+str(year)+str(month)+".tif"
         tifnames[i] = fullname
         i = i+1 
Run Code Online (Sandbox Code Playgroud)

运行过滤器(lambda x:'aet'in x,tifnames)或其他答案返回:

Traceback (most recent call last):
  File "<pyshell#89>", line 1, in <module>
    func(tifnames,'aet')
  File "<pyshell#88>", line 2, in func
    return [i for …
Run Code Online (Sandbox Code Playgroud)

python grep list

29
推荐指数
3
解决办法
4万
查看次数

使用R中的字符串名称分配data.frame的列

我正在尝试将数据分配给现有数据框,并在循环中生成名称.一个基本的例子可能是

A = data.frame(a = c(1,2,3), b=c(3,6,2))

for (i in 1:2){
    name = paste("Name",i, sep="")
    assign(name, c(6,3,2))
}
Run Code Online (Sandbox Code Playgroud)

现在我只需要弄清楚如何将name1和name2添加到data.frame A,同时保留其指定的名称.我确信有一个简单的答案,我现在就没有看到它.

最后我想结束

A
#a b name1 name2
#1 3 6      6
#2 6 3      3
#3 2 2      2
Run Code Online (Sandbox Code Playgroud)

但我需要以自动化的方式做到这一点.

例如,如果for循环可以适应

for (i in 1:2){
    name = paste("Name",i, sep="")
    assign(name, c(6,3,2)
    A= cbind(A, get(paste(name,i,sep="")))  # works but doesn't maintain the column name as name1 or name2 etc
}
Run Code Online (Sandbox Code Playgroud)

但是这不保留列名

string r assign

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

以块的形式写入 xarray 多索引数据

我正在尝试有效地重组大型多维数据集。假设随着时间的推移,我有许多遥感图像,其中有许多波段,坐标为 xy 像素位置,时间为图像采集时间,波段为收集的不同数据。

在我的用例中,假设 xarray 坐标长度大约为 x (3000)、y (3000)、时间 (10),带有浮点数据带 (40)。所以 100GB+ 的数据。

我一直在尝试从这个例子中工作,但我在将它翻译成这个案例时遇到了麻烦。

小数据集示例

注意:实际数据比这个例子大得多。

import numpy as np
import dask.array as da
import xarray as xr

nrows = 100
ncols = 200
row_chunks = 50
col_chunks = 50

data = da.random.random(size=(1, nrows, ncols), chunks=(1, row_chunks, col_chunks))

def create_band(data, x, y, band_name):

    return xr.DataArray(data,
                        dims=('band', 'y', 'x'),
                        coords={'band': [band_name],
                                'y': y,
                                'x': x})

def create_coords(data, left, top, celly, cellx):
    nrows = data.shape[-2]
    ncols = data.shape[-1]
    right = …
Run Code Online (Sandbox Code Playgroud)

python arrays parquet dask python-xarray

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

生成R中总和为1的3个随机数

我希望创建总和为1的3个(非负)准随机数,并反复重复.

基本上我试图在许多试验中将某些东西分成三个随机部分.

虽然我知道

a = runif(3,0,1)

我想我可以在下一次运行时使用1-a作为最大值,但是看起来很麻烦.

但这些当然不能归结为一个.有任何想法,哦明智的stackoverflow-ers?

random r

11
推荐指数
5
解决办法
6771
查看次数

带有区域和轮廓ggplot的geom_area图

我正在尝试制作一个堆叠的geom_area图,但是想要用线描绘每个区域图(在第一个"红色"区域而不是蓝色区域上工作).这是我最好的尝试,但我无法弄清楚如何使线型也堆叠.想法?

例

df= data.frame(Time=as.numeric(strsplit('1939 1949 1959 1969 1979 1989 1999 2009 2019 2029 2039 2049 1939 1949 1959 1969 1979 1989 1999 2009 2019 2029 2039 2049', split=' ')[[1]] ),
               Acres=as.numeric(strsplit('139504.2 233529.0 392105.3 502983.9 685159.9 835594.7 882945.1 1212671.4 1475211.9 1717971.7 1862505.7 1934308.0 308261.4 502460.8 834303.1 1115150.7 1430797.8 1712085.8 1973366.1 1694907.7 1480506.0 1280047.6 1164200.5 1118045.3', split=' ')[[1]] ),
               WUClass= strsplit('DenseUrban DenseUrban DenseUrban DenseUrban DenseUrban DenseUrban DenseUrban DenseUrban DenseUrban DenseUrban DenseUrban DenseUrban Urban Urban Urban Urban Urban Urban Urban Urban Urban Urban Urban …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

中断R中的函数而不是循环

好的,所以我正在编写一个更大的函数来调用几个函数。

问题是我需要在某些逻辑条件下突破“function_inner”而不突破“function_outer”。Break 似乎适用于循环,然后停止,它停止所有功能......有什么想法吗?

function_outer <- function(){

    beta =1
        function_inner <- function(beta){
        if (beta==1){?break?stop}
        print("Its not working")
         }
    return(beta)
}
Run Code Online (Sandbox Code Playgroud)

r break

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

Python:从带有所需模块的 .py 文件导入函数

我正在尝试做一些相当简单的事情。我想从 .py 文件导入一个函数,但使用在我的主脚本中导入的模块。例如存储以下函数

./文件/罪人.py

def sinner(x):
  y = mt.sin(x)
  return y
Run Code Online (Sandbox Code Playgroud)

然后我想使用数学作为 mt 运行罪人

from sinner import sinner
import math as mt
sinner(10)
Run Code Online (Sandbox Code Playgroud)

这并不奇怪会引发错误

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-3-50006877ce3e> in <module>()
      2 import math as mt
      3 
----> 4 sinner(10)

/media/ssd/Lodging_Classifier/sinner.py in sinner(x)
      1 import math as mt
----> 2 
      3 def sinner(x):
      4   y = mt.sin(x)
      5   return y

NameError: global name 'mt' is not defined
Run Code Online (Sandbox Code Playgroud)

我知道如何在 R 中处理这个问题,但在 Python 中不知道。我错过了什么?

python module function

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

在 R 中按名称从循环或 lapply 调用列表

我正在尝试使用“by”调用的输出,它很容易转换为列表......但有时列表仍然无视我

a = list('1'=c(19,3,4,5), '4'=c(3,5,3,2,1,6), '8'=c(1,3))

 for (i in c(1,8,4)){
    # would like to do something like this
     a[["i"]]      # calling list elements by name rather than # 
     }


 #ideally the output would be something like this

>19,3,4,5 
>1,3
>3,5,3,2,1,6
Run Code Online (Sandbox Code Playgroud)

r list call lapply

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

使用逻辑字符串子集化data.frame

我想使用字符串执行逻辑操作(是的,我想这样做)

a = data.frame(x=c(1,2,3,4),y=c(11,12,13,14))
logical_text = "a$x!=2 & a$y!=14"

a
> a
  x  y
1 1 11
2 2 12
3 3 13
4 4 14
Run Code Online (Sandbox Code Playgroud)

我希望使用如下字符串

  a[logical_text,]
> a[logical_text,]
    x  y
NA NA NA
Run Code Online (Sandbox Code Playgroud)

为了得到相同的结果:

a[a$x!=2 & a$y!=14,]
> a[a$x!=2 & a$y!=14,]
  x  y
1 1 11
3 3 13
Run Code Online (Sandbox Code Playgroud)

r character subset dataframe

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

删除符合Python中逻辑条件的列表元素

我在'inner'中有如下arcpy(arcmap)列出的文件名.

inner = [u'aet1941jan.asc', u'aet2004jun.asc', u'aet1981nov.asc', u'aet1985feb.asc', u'aet1974sep.asc', u'aet1900sep.asc', u'aet1994apr.asc', u'aet1970nov.asc']
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来只提取1990年以后的栅格.如何构建一个逻辑表达式,从列表中删除所有旧栅格的所有元素?

这样输出就是一个列表:

out = [u'aet2004jun.asc', u'aet1994apr.asc']
Run Code Online (Sandbox Code Playgroud)

python grep list

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