我正在使用Numpy将数据存储到矩阵中.来自R background,有一种非常简单的方法可以在行/列或矩阵两者上应用函数.
python/numpy组合有类似的东西吗?编写我自己的小实现并不是一个问题,但在我看来,我提出的大多数版本将比任何现有的实现效率低得多/内存密集.
我想避免从numpy矩阵复制到局部变量等,这可能吗?
我试图实现的函数主要是简单的比较(例如,某列的多少元素小于数字x或者有多少元素的绝对值大于y).
已经问过这个问题的版本,但我没有找到满意的答案。
问题:给定一个大的 numpy 向量,找到重复的向量元素的索引(其变体可以与容差进行比较)。
所以问题是 ~O(N^2) 和内存限制(至少从当前算法的角度来看)。我想知道为什么我尝试过的 Python 比等效的 C 代码慢 100 倍或更多。
import numpy as np
N = 10000
vect = np.arange(float(N))
vect[N/2] = 1
vect[N/4] = 1
dupl = []
print("init done")
counter = 0
for i in range(N):
for j in range(i+1, N):
if vect[i] == vect[j]:
dupl.append(j)
counter += 1
print("counter =", counter)
print(dupl)
# For simplicity, this code ignores repeated indices
# which can be trimmed later. Ref output is
# counter = 3 …
Run Code Online (Sandbox Code Playgroud) 首先,我试图找到我的问题的答案(我认为这是非常基本的)在谷歌和网站上搜索,但没有出现.
我试图从一个numpy矩阵中获取行,但我不能.例如,如果我使用这个:
result = numpy.matrix([[11, 12, 13],
[21, 22, 23],
[31, 32, 33]])
for p in result:
print(p[0])
Run Code Online (Sandbox Code Playgroud)
打印这个:
[[11 12 13]]
[[21 22 23]]
[[31 32 33]]
Run Code Online (Sandbox Code Playgroud)
如果我只使用它也一样 p
访问每一行我需要做什么?numpy.nditer(result)
打印一个数组,我需要每一行来执行一些操作.