小编dra*_*ock的帖子

python与numpy中的布尔和类型检查

if今天在python 条款中遇到了意外的结果:

import numpy
if numpy.allclose(6.0, 6.1, rtol=0, atol=0.5):
    print 'close enough'  # works as expected (prints message)

if numpy.allclose(6.0, 6.1, rtol=0, atol=0.5) is True:
    print 'close enough'  # does NOT work as expected (prints nothing)
Run Code Online (Sandbox Code Playgroud)

经过一番探讨(即这个问题,特别是这个答案)之后,我明白了原因:type返回的numpy.allclose()numpy.bool_而不是简单的旧bool,而且显然是foo = numpy.bool_(1),然后if foo将评估,True同时if foo is True将评估False.这似乎是is运营商的工作.

我的问题是:为什么numpy有自己的布尔类型,根据这种情况,最佳做法是什么?我可以写逃脱if foo:得到预期的行为在上面的例子,但我喜欢更严格if foo is True:,因为它排除之类的东西2,并 …

python boolean numpy pep8

13
推荐指数
2
解决办法
3780
查看次数

numpy.tile非整数次

是否有更好的方法numpy来将数组平铺非整数次?这可以完成工作,但很笨重,并且不容易推广到n维:

import numpy as np
arr = np.arange(6).reshape((2, 3))
desired_shape = (5, 8)
reps = tuple([x // y for x, y in zip(desired_shape, arr.shape)])
left = tuple([x % y for x, y in zip(desired_shape, arr.shape)])
tmp = np.tile(arr, reps)
tmp = np.r_[tmp, tmp[slice(left[0]), :]]
tmp = np.c_[tmp, tmp[:, slice(left[1])]]
Run Code Online (Sandbox Code Playgroud)

这会产生:

array([[0, 1, 2, 0, 1, 2, 0, 1],
       [3, 4, 5, 3, 4, 5, 3, 4],
       [0, 1, 2, 0, 1, 2, 0, 1],
       [3, 4, 5, 3, …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy

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

Windows 中 R 中的 TTF/OTF 字体选择:屏幕与 pdf()

我知道在 Linux 或 Mac 上的 R 中,字体始终被定义为参数 family="Charis SIL" 到 par()、text() 或图形设备函数之一,如 tiff()、svg() 等(用您想要的任何字体名称替换“Charis SIL”)。我也知道在 Windows 上,它只适用于 cairo_pdf() 和 svg() 设备;jpeg()、tiff()、png() 和 bmp() 等光栅图形设备要求首先将字体映射到“Windows 字体数据库”中:

# this doesn't work on windows
jpeg(filename='test1.jpg', family='Charis SIL')
plot(0,0,type='n',ann=FALSE,frame.plot=FALSE)
text(0,0,labels='iyeø?œa???æ?????o?u???????????')
dev.off()
# (gives warnings: Font family not found in Windows font database)  

# this does work on windows (assuming you have the Charis SIL font installed)
windowsFonts(myCustomWindowsFontName=windowsFont('Charis SIL'))
jpeg(filename='test2.jpg', family='myCustomWindowsFontName')
plot(0,0,type='n',ann=FALSE,frame.plot=FALSE)
text(0,0,labels='iyeø?œa???æ?????o?u???????????')
dev.off()
Run Code Online (Sandbox Code Playgroud)

pdf() 设备仍然不同:它似乎需要在 postscriptFonts() 和/或 pdfFonts() 数据库中定义的字体,这意味着只有 Type1 字体:

# this doesn't …
Run Code Online (Sandbox Code Playgroud)

windows unicode fonts r

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

要转换为nan值的数组的零值

我有一个阵列1200*1200.它的一些值为零.我想将零值转换为numpy.nan值.这是我的解决方案:

import numpy
for i in range(1200):
    for j in range(1200):
        if data_a[i, j] == 0:
            data_a[i, j] = numpy.nan
Run Code Online (Sandbox Code Playgroud)

但我得到了这个错误:data_a[i,j] = numpy.nan ValueError: cannot convert float NaN to integer 我不明白错误.任何替代或解决方案?

python arrays numpy nan

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

矩阵赋值在lapply中失败

我有一个带有字符数据的data.frame,我希望最终得到一个具有相同列标题但每个值都有计数的矩阵.到目前为止,我可以得到一个我想要的维度的空矩阵,但是当我尝试填充myMatrix计数时,它不起作用.

myData <- data.frame(a=LETTERS[5:8], b=LETTERS[6:9], c=rep(LETTERS[5:6],2), d=rep(LETTERS[7],4))
#   a b c d
# 1 E F E G
# 2 F G F G
# 3 G H E G
# 4 H I F G
myValues <- sort(unique(unlist(myData))) # E F G H I
myList <- lapply(myData, table)
myMatrix <- matrix(nrow=length(myValues), ncol=length(myList), dimnames=list(myValues,names(myList)))
#    a  b  c  d
# E NA NA NA NA
# F NA NA NA NA
# G NA NA NA NA
# …
Run Code Online (Sandbox Code Playgroud)

r lapply

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

测试一个因子是否嵌套在另一个因子中

有没有一种简单的方法可以确定一个向量是否嵌套在另一个向量中?换句话说,在下面的示例中,每个值bar都与一个且只有一个值相关联foo,因此bar嵌套在其中foo.

data.frame(foo=rep(seq(4), each=4), bar=rep(seq(8), each=2))
Run Code Online (Sandbox Code Playgroud)

为了澄清,这是期望的结果:

foo <- rep(seq(4), each=4)
bar <- rep(seq(8), each=2)
qux <- rep(seq(8), times=2)
# using a fake operator for illustration:
bar %is_nested_in% foo  # should return TRUE
qux %is_nested_in% foo  # should return FALSE
Run Code Online (Sandbox Code Playgroud)

r

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

标签 统计

numpy ×3

python ×3

r ×3

arrays ×2

boolean ×1

fonts ×1

lapply ×1

nan ×1

pep8 ×1

unicode ×1

windows ×1