小编nis*_*sah的帖子

numpy数组是通过引用传递的吗?

我碰到一个事实,即来到numpy阵列通过引用在多个地方通过,但后来当我执行下面的代码,为什么会出现的行为之间的差异foobar

import numpy as np

def foo(arr):
   arr = arr - 3

def bar(arr):
   arr -= 3

a = np.array([3, 4, 5])
foo(a)
print a # prints [3, 4, 5]

bar(a)
print a # prints [0, 1, 2]
Run Code Online (Sandbox Code Playgroud)

我正在使用python 2.7和numpy版本1.6.1

python arrays numpy

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

为什么非交互式Bash shell中的别名不起作用

我试图在非交互式bash shell中使用别名.我已经定义了我的别名~/.bashrc,我已经设置了变量BASH_ENV=~/startUpFile.startUpFile的内容是source ~/.bashrc.

当我执行alias命令时,我可以看到我的别名被识别.但是,如果我尝试使用定义的别名~/.bashrc,Bash无法识别它.它给了我未知的命令错误.

使用TCSH shell可以很容易地执行此操作,因为~/.cshrc始终会读取文件.

有什么想法我怎么能用Bash shell做到这一点?

bash alias non-interactive

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

应用程序如何在运行时解析为不同版本的共享库?

我是共享库如何在linux上工作的菜鸟.我试图了解应用程序如何在Linux上运行时解析同一共享库的不同修订版.

据我所知,共享库有三个"名称",例如,

  1. libmy.so.1.2(实名即实际的obj文件)
  2. libmy.so.1(SONAME,嵌入在实际的obj文件中)
  3. libmy.so(链接器名称,在链接时提供给链接器并嵌入在可执行文件中)

通过LDCONFIG安装库时,它将创建以下符号链接

  • (2)=>(1)
  • (3)=>(2)

现在假设我使用以下实名libmy.so.2.0编译同一个库的另一个版本.指南中的SONAME是libmy.so.2.0

在应用程序链接时,我将使用"-l"标志提供什么链接器名称.按照我阅读的指南(http://www.dwheeler.com/program-library/Program-Library-HOWTO/x36.htm l),它不一定是libmy.so,如果是这样,两个版本将如何obj文件的区别?

linux shared-libraries

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

系统调用如select()或poll()如何在引擎盖下工作?

我知道异步I/O操作通过select()并且poll()不使用处理器时间,即它不是繁忙的循环,但那么这些是如何在引擎盖下真正实现的?是否以某种方式支持硬件,这就是为什么使用这些处理器的处理器成本不明显?

sockets linux io asynchronous

17
推荐指数
2
解决办法
6862
查看次数

使用带有signed var和unsigned literal的== op时,GCC不会发出警告

为什么GCC仅警告下面的代码中的情况1和3而不是2?

我正在使用-Wall和-g标志进行编译.

int main() {

    unsigned int ui = 4;
    int si = 6;

    if (si == ui ) { // Warning comparison b/w signed and unsigned
        printf("xxxx");
    }

    if (si == 2U ) { // No Warning --- WHY ???
        printf("xxxx");
    }

    if (si > 2U ) { // Warning comparison b/w signed and unsigned
        printf("xxxx");
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

gcc casting compiler-warnings

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

boost :: scoped_ptr是否违反了逻辑constness的准则

在boost :: scoped_ptr中operator*,operator->它们是声明的const函数,尽管它们返回T&并且T*可能允许客户端更改底层数据.这违反了逻辑常量的概念(Myers,Effective C++)

const函数不应该有签名吗?

const T& operator*() const;
const T* operator->() const;
Run Code Online (Sandbox Code Playgroud)

c++ const smart-pointers boost-smart-ptr

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

只有在array.each中使用块内的print语句时才会出现Ruby错误

如果我anagramsirb中调用下面的函数,我会得到一个非空的哈希容器.但是如果您注释掉该print "No Key\n"行,则返回的哈希容器现在为空.事实上,对于列表中的所有元素,elsif分支中的代码似乎都在执行.要么我疯了,要么这里有一个讨厌的错误:

def anagrams(list = ['cars', 'for', 'potatoes', 'racs', 'four','scar', 'creams', 'scream'])
        aHash = Hash.new()
        list.each { |el|
            aKey = el.downcase.chars.sort.to_a.hash
            if aHash.key?(aKey)
                # print "Has Key\n"
                aHash[aKey] << el
            elsif
                # print "No Key\n"
                aHash[aKey] = [el]
            end
        }

        return aHash
end
Run Code Online (Sandbox Code Playgroud)

我安装了以下版本的rubyirb:

ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]
irb 0.9.6(09/06/30)
Run Code Online (Sandbox Code Playgroud)

ruby arrays hash

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