小编hoa*_*ran的帖子

知道其索引的多个列表元素

我需要从给定列表中选择一些元素,知道它们的索引.假设我想创建一个新列表,其中包含索引为1,2,5的元素,来自给定列表[-2,1,5,3,8,5,6].我做的是:

a = [-2,1,5,3,8,5,6]
b = [1,2,5]
c = [ a[i] for i in b]
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?像c = a [b]之类的东西?

python indexing element list python-3.x

203
推荐指数
4
解决办法
19万
查看次数

显示仅具有主要刻度标签的小刻度

我想在轴上有一个小刻度,但只显示主刻度标签.例如,次要刻度是[19,20,21,... 40,41],主刻度标签是[20,25,30,35,40].我该怎么做?下面的代码没有完成这项工作.我知道可以像这个例子一样使用MultipleLocator,FormatStrFormatter .但是,我在轴上的值有点"奇怪",起始值为19(不是20),结束值为41,这在使用MultipleLocator时会造成困难.

import numpy as np
from matplotlib import pylab as plt

fig = plt.figure()
ax = fig.add_subplot(111)
x = np.linspace(19.,41,23)
y = x**2
ax.plot(x,y)
ax.set_xticks(x)
ax.set_xticklabels(x, minor=False)
plt.show()
Run Code Online (Sandbox Code Playgroud)

它给了我以下情节: 在此输入图像描述

或者ax.set_xticklabels([20, 25, 30, 35, 40], minor=False) 给我另一个情节: 在此输入图像描述 如何更改我的代码以获得我需要的内容.非常感谢你的帮助!

python matplotlib labels

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

Fortran 90数据语句不会覆盖数据

我试图DATA在Fortran 90中使用语句初始化一个数组.代码如下:

PROGRAM dt_state
IMPLICIT NONE
INTEGER :: a(4), b(2:2), c(10)

DATA a/4*0/
WRITE (6,*) a(:)    

DATA a/4,3,2,1/
WRITE (6,*) a(:)
END PROGRAM dt_state
Run Code Online (Sandbox Code Playgroud)

我预计屏幕上的结果将是0 0 0 04 3 2 1.但是,我得到的是0 0 0 00 0 0 0.它意味着DATA语句不会覆盖值a,是吗?

arrays fortran fortran90

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

python'function'对象没有属性'GzipFile'

我为压缩文件编写了一个函数如下:

def gzip(filename):
    '''Gzip the given file and then remove original file.'''
    r_file = open(filename, 'r')
    w_file = gzip.GzipFile(filename + '.gz', 'w', 9)
    w_file.write(r_file.read())
    w_file.flush()
    w_file.close()
    r_file.close()
    os.unlink(filename) 
Run Code Online (Sandbox Code Playgroud)

但是,当我运行我的程序时,我收到错误:

'function'对象没有属性'GzipFile'.

我做错了什么?先谢谢!

python attributes gzip object gzipfile

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

fortran 90在指针赋值期间预期的边界规范

我是Fortran的新手.我正在Fortran 90中编写一个程序来获取数组的非零元素,并使用指针函数将它们放入一个新数组中,如下所示:

program prog
    implicit none
    integer, target :: a(5)
    integer :: i
    integer, pointer :: nz(:)


    a(1) = 1
    a(2) = 0
    a(3) = 0
    a(4) = 2
    a(5) = 3

    nz => non_zeros(a)
    do i=1, size(nz)
       write(*,*) nz(i)
    end do  

contains
function non_zeros(a)
    integer, target :: a(:) 
    integer, pointer:: non_zeros(:)
    integer :: n, i, j

    n = count(a .ne. 0)
    allocate(non_zeros(n))

    j = 0
    do i=1, m
        if (a(i) .ne. 0) then
            j = j + 1
            non_zeros(j) …
Run Code Online (Sandbox Code Playgroud)

pointers specifications fortran90 bounds

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